C语言求100以内素数问题

main()
{int a,b,c;
for (a=3;a<=100;a++)
{c=1;
for (b=2;b<=a-1;b++)
if(a%b==0)c=0;
if(c)printf("%d ",a);
}
getch();
}

以上代码为求100以内素数..
问题:
当小循环
for (b=2;b<=a-1;b++)
if(a%b==0)c=0;结束时,如果此时c被赋值为0,那么下一句:
if(c)printf("%d ",a);
如何执行??此时c已经为0,那if(c)这个语句又怎么能输出a的值呢?
本人新手,希望DX不吝赐教..谢谢!!

C语言经典例子之求100之内的素数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-03-14
这正是这个算法的精华。
如果此时c被赋值为0,则说明a%b为0啊,也就是说这个数不是素数,
而a%b不等于0时候c=1则说明这个数是素数,因此打印出来a的值,也就是这个素数的值。
第2个回答  2010-03-14
当a为素数的时候a%b是不会等于0的,c也就不会被赋值为0,if(c)就能成立,就能输出了。
每次进入for (a=3;a<=100;a++)时c已经重新被赋值。
第3个回答  2010-03-14
在if条件中0相当于false,非零是true
当c为0时 printf("%d ",a);不执行
如果对于2到a-1中的每个数,a%b都不为零,则c为1,此时是素数printf("%d ",a);执行本回答被提问者采纳
第4个回答  2010-03-14
上一个if语句是前提
只有a不是素数时c才赋值为0 此时不输出a的值
赋值c的值由进入循环时赋值1不会改变 此时输出a的值
相似回答