c语言素数问题

qq56328974 2012-02-09 11:22:17
#include<stdio.h>
void main()
{int a,b,c=1;
for(a=100;a<=200;a++){
for (b=2;b<a;b++) {
if(a%b==0)
{c=0;break;}
// else{
// c=1;}
}
if(c){
printf("%d是素数",a) ;}

}
}

为什么把注释去掉就可以,不去掉就不行呢。c明明有初值1的
...全文
145 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2012-02-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 qdujiaolong 的回复:]
你这个是两层循环,假如有一个数不是素数,那么此时c变成0了,同时break,这是它只跳出了第二层循环。这时if(c)不满足条件,不输出,然后进入外循环的下一个数。这是C是0,不再是1,如果不加注释那个恢复c=1这一步,那么下面的所有运行,c都是0,不可能再变为1,所以是素数也判断不出来了。不知道楼主能听明白么?
[/Quote]
++
seagpf 2012-02-09
  • 打赏
  • 举报
回复
同意楼上的,楼主应该在每次第二层循环的时候都进行c = 1的赋值,比如for (c = 1, b = 2;b < a; b++),关键是每次循环时候都保证C的初始值是1
面包大师 2012-02-09
  • 打赏
  • 举报
回复
		if(c)
{
printf("%d是素数",a) ;
}
c = 1;//你应该在这个后边加个

面包大师 2012-02-09
  • 打赏
  • 举报
回复
虽然有赋初值,但是在if(a%b==0)这个成立的时候就被赋值为了0.假设那个不注释掉,那么只要if(a%b==0)这个不成立,就被认为是素数,这是不正确的
心塵 2012-02-09
  • 打赏
  • 举报
回复
你这个是两层循环,假如有一个数不是素数,那么此时c变成0了,同时break,这是它只跳出了第二层循环。这时if(c)不满足条件,不输出,然后进入外循环的下一个数。这是C是0,不再是1,如果不加注释那个恢复c=1这一步,那么下面的所有运行,c都是0,不可能再变为1,所以是素数也判断不出来了。不知道楼主能听明白么?
赵4老师 2012-02-09
  • 打赏
  • 举报
回复
单步调试和设断点调试是程序员必须掌握的技能之一。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧