C语言求素数

main(){inti,m;for(i=2;i<=100;i++){m=sqrt(i);for(i=2;i<=m;i++)if(i%m!=0);printf("%d",i... main()
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);

printf("%d",i);}

getch();
}为什么这代码会进入死循环
首先for(i=2;i<=m;i++)
if(i%m!=0);这俩行代码执行完后 不是应该跳到for(i=2;i<=100;i++)吗 ? 然后继续
for(i=2;i<=m;i++)
if(i%m!=0);的吗?
展开
 我来答
kaixingui2012
推荐于2017-11-25 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:7762万
展开全部
main()
{
int i,m,j; //增加一个变量,见后面说明
for(i=2;i<=100;i++)
{m=sqrt(i);
//for(i=2;i<=m;i++) 这里i值被重新赋值,你原来的i值找不到了!如果是素数,怎么输出呢?
for(j=2;j<=m;j++) //换一个变量,不要影响要检查的数据i
if(j%m!=0) //改成j
; //这样写,会让你更清楚,这句如果j不能整除m,就啥也不干,象你所说回到下一个循环检查。
else
break; //加上这两句,如果能整除则说明:i不是素数!!就不要再去检查了。
if ( j > m ) //加上这句,如果检查所有的j全部不能整除m,循环结束后,j一定大于m,这时的i才是素数
printf("%d",i);
}

getch();
}
百度网友2cfc29a
2013-01-27 · TA获得超过611个赞
知道答主
回答量:44
采纳率:0%
帮助的人:23.5万
展开全部
main()
{
int i,m;
for(i=2;i<=100;i++)
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);

printf("%d",i);}

getch();
}为什么这代码会进入死循环
亲,这个程序对不对我先不管..你漏了一个括号
{m=sqrt(i);
for(i=2;i<=m;i++)
if(i%m!=0);
}这个括号你漏了,要不还是能运行的..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0919d76
2012-03-25
知道答主
回答量:4
采纳率:0%
帮助的人:6993
展开全部
#include<stdio.h>
void main()
{int i,j,n=0,xx[1000];
for(i=1;i<1000;i++)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i) /*保证i以下的每个数都不能被i整除*/
xx[n++]=i;
}
printf("1到1000以内的所有素数如下\n");
for(i=0;i<n;i++)
printf(" %d ",xx[i]);
printf("\n 共有n=%d个素数 \n",n);
}
简单易懂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
龚炜林
2012-03-02 · TA获得超过1561个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:695万
展开全部
你好!你的不是死循环,而是没有输出类容。 if(i%m!=0);if语句这里应该把分号去掉

printf("%d",i);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
名字叫难忘啊DM
高粉答主

2020-02-19 · 醉心答题,欢迎关注
知道答主
回答量:5.8万
采纳率:3%
帮助的人:3462万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式