这个程序错在哪里?为什么把所有的数字都输出出来了?

 int main()
{
int i,j;
for(i=2;i<100;i++)
{
for(j=2;j<i;j++)
{
if (!i%j)break;
}
if (j==i||i==2)printf("%d\n",i);
}
}

if (!i%j)break;
->
if (!(i%j))break;
否则优先级错了。

因为每一个数都能被自己整除,所以,i 从2开始就会都会有输出,直到自己才break,然后后面条件j会等于i。然后就是输出

if (j==i||i==2)printf("%d\n",i); 是否应该是在第二个 for 循环内,而不是第一个 for 循环内。