C语言 列出100到200之间的素数

# include <stdio.h>
int main (void)
{
int i,j;

for (i=100;i<201;i++)
{
for (j=2;j<i;j++)
if (i % j == 0)
break;
if (i == j)
printf ("%d\n", i);
}
return 0;
}
下面这句不怎么看懂,上面的程序已经说了j<i,这里为什么会出现i==j的情况呢?

if (i == j)
printf ("%d\n", i);
各位大侠帮帮忙,刚接触C。。

if (i == j)这句是判断i是否为素数啦,如果相等,i就是素数。
下面解释:
素数只能被1和本身整除。
所以,如果一个i是素数,那么i%j==0,将一直不成立,当循环至j=i-1,i%j==0,依然不成立,然后就执行j++,这样j就等于i了,也就不满足j<i而退出循环了。
如果i不是素数,那么就能被小于i的某个整数整除,于是j就小于i了
这样就可以根据i==j来判断素数了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-06
楼主可能误以为
if (i==j)
printf("%d\n", i);
是在 for (j=2;j<i;j++) 的循环体里面, 其实不是的, 该循环体只有:
if (i % j == 0)
break;
第2个回答  2013-03-06
当j=i-1时仍然不满足i%j==0时,j++跳出循环,此时i==j,执行下一条if语句可判断为素数
第3个回答  2013-03-06
for (j=2;j<i;j++)
if (i % j == 0)
break;
跳出循环,有两种情况。1.i%j==0;2.i=j时不满足循环条件而退出循环。
相似回答