用C语言求10以内的素数

{
int m,i;
for(m=2;m<=10;m++){
for(i=2;i<m;i++)
if(m%i!=0) break;
printf("%3d",m);
}
}
这个程序为什么输入的是2,3,4,5,6,7,8,9,10啊?break似乎没起作用。求能正确的程序(我是菜鸟,所以程序写得简单易懂些,谢谢了)

判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

你的方法都错了,还能正确吗。
#include <math.h>
main()
{
int m,i,k,h=0,leap;
printf("\n");

for(m=1;m<10;m++)
{
leap=1;
k=sqrt(m+1);
for(i=2;i<=k;i++){
if(m%i==0)
{
leap=0;
break;
}
}

if(leap)
printf("%d,",m);
}
getch();
getch();
}
温馨提示:答案为网友推荐,仅供参考
第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);
}
}
相似回答