第1个回答 2008-10-24
起了作用,但是判断错了
你的程序的意思是:从2开始到这个数的所有数中,如果有任何一个不能整除它,则输出这个数..
结果当然是输出所有整数啦..因为任何一个数n都不可能被所有1~n-1的数整除啊
逻辑错误
#include <stdio.h>
int main()
{
int i,m;
for(i=2;i<=10;i++)
{
for(m=2;m<=i/2;m++) //把i/2换成sqrt(i)更优
if(i%m==0)
break;
if(m>i/2) //如果m增大到超过i/2了,说明没有任何一个m整除i,所以i是素数
printf("%d ",i);
}
}
第2个回答 2008-10-24
break;跳出循环,只是跳出break所在的那个循环,并不是跳出所有的循环。
for(m=2;m<=10;m++)
{
for(i=2;i<m;i++) if(m%i!=0) break; /*break跳出内层循环*/
printf("%3d",m); /*这里是外层循环*/
}
第3个回答 2008-10-24
你跳出的是 I 循环 而不是 M 循环
所以每次都执行了 printf("%3d",m);
第4个回答 2008-10-24
{
int m,i;
for(i=1;i<=10;i++)
{
m=sqrt(i);
for(int j=2;j<=m;j++)
if(j%i==0) break;
if(j>m) printf("%d is P.\n",i);
}
}