c语言素数问题
#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的
[解决办法]
你这个是两层循环,假如有一个数不是素数,那么此时c变成0了,同时break,这是它只跳出了第二层循环。这时if(c)不满足条件,不输出,然后进入外循环的下一个数。这是C是0,不再是1,如果不加注释那个恢复c=1这一步,那么下面的所有运行,c都是0,不可能再变为1,所以是素数也判断不出来了。不知道楼主能听明白么?
[解决办法]
虽然有赋初值,但是在if(a%b==0)这个成立的时候就被赋值为了0.假设那个不注释掉,那么只要if(a%b==0)这个不成立,就被认为是素数,这是不正确的