用C语言求10以内的素数

{intm,i;for(m=2;m<=10;m++){for(i=2;i<m;i++)if(m%i!=0)break;printf("%3d",m);}}这个程序为什么输... {
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似乎没起作用。求能正确的程序(我是菜鸟,所以程序写得简单易懂些,谢谢了)
展开
 我来答
ryw12403
2008-10-24 · TA获得超过1899个赞
知道大有可为答主
回答量:2501
采纳率:0%
帮助的人:2094万
展开全部
判断素数的方法:用一个数分别去除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();
}
1983老虎
2008-10-24 · 超过17用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:0
展开全部
起了作用,但是判断错了
你的程序的意思是:从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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
伊·梵beec
2008-10-24 · TA获得超过2160个赞
知道大有可为答主
回答量:1897
采纳率:0%
帮助的人:1375万
展开全部
break;跳出循环,只是跳出break所在的那个循环,并不是跳出所有的循环。

for(m=2;m<=10;m++)
{
for(i=2;i<m;i++) if(m%i!=0) break; /*break跳出内层循环*/
printf("%3d",m); /*这里是外层循环*/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
社保小龙虾
职业观察员

2008-10-24 · 一个擅长社保知识、精通五险一金的小虾米!
社保小龙虾
采纳数:131 获赞数:380

向TA提问 私信TA
展开全部
你跳出的是 I 循环 而不是 M 循环

所以每次都执行了 printf("%3d",m);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pujia12345
2008-10-24 · TA获得超过3680个赞
知道大有可为答主
回答量:3456
采纳率:0%
帮助的人:2968万
展开全部
{
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);
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式