此程序为什么不能输出2?

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:11:17
这个程序为什么不能输出2这个数啊?望各位高手给与指点。谢~~~
#include<stdio.h>
#include<math.h>
main()
{int x,y,m,k,n=0;
printf("please input a number\n");
scanf("%d",&m);
for(x=2;x<=m;x++)
{k=sqrt(m);
for(y=2;y<=k;y++)
if(x%y==0) break;
else
{printf("%d ",x);
n=n+1;
}
if(n%10==0)
printf("\n");
}
printf("\n");
}

不止是2不能输出 2的倍数都不能输出.
if(x%y==0) break;
这条语句 如果x除以y的余数等于0的时候 就执行break,
直接跳出这个for(y=2;y<=k;y++) 这个for循环.
故else printf("%d ",x);这条语句也就不能执行了.
所以不可能输出2的倍数.

注意: for(y=2;y<=k;y++) 在这条语句中有y++ 貌似y++后就是y=3了 所以int(x%y==0)不能成立, 可以执行else了.
但是在第一次执行for循环 if(x%y==0)的时候 y=2, 所以执行break
直接跳出这个小for循环, 所以y++也不可能了.

太小气了吧