#include <stdio.h>
main()
{int i,n;
for(n=2;n<=32767;n++)
for(i=2;n%i==0;i++)
if(i==n)
printf("%d\n",n);
system ("pause");
return 0;
}
为什么只有2呢?原因是这样的:
一。首先是n=2进来,然后进入第二个for语句 i=2 ,判断n%i是否0,
所以当i=2时 是成立的,但是i=3时 条件n%i==0就不成立 退出第二个for语句。
二。当n自加等于3时侯,3%2不等于0,所以直接就退出第二个for语句了。
三。当n自加等于4的时候 ,n%i==0成立,但是n不等于i 所以不能打印,然后i自加等于5,不满足
n%i==0 所以退出第二个for语句。
以此类推,
当n=奇数 第二个for语句是不满足n%i==0这个条件的,所以第二个for语句一次也不能执行。
当n=偶数(n>2) 第二个for语句只能执行一次(因为第二次i=3 n%i是不会等于0的) 并且由于i不等于n 所以不会打印
因此程序就只能打印出2。
[
本帖最后由 jrkaho 于 2010-3-19 11:09 编辑 ]