天分问题,研究N长时间不明白啊!

来源:百度知道 编辑:UC知道 时间:2024/05/30 19:03:16
天分问题,研究N长时间不明白啊!
#include "math.h"
main()
{int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
{k=sqrt(m+1);
for(i=2;i<=k;i++)
if(m%i==0)
{leap=0;break;} 这句是说当M和I的余为零的时候就设leap为零,而且中断,后面的break我将它删除后一样可以运行,不知道加上去有什么意义?
if(leap)这句不太明白,是不是说当leap不为零,这句和上句有什么联系?
{printf("%-20d",m);
}
leap=1;}这句完全不明白!
}
我学习C很长时间,一直都是上课不听,下课不看书,但是最近有点想发奋,但是发现和同学的差距大了,所以想加倍加油!! 这道题目我想了很多次就是不明白! 请高手帮忙!
这贴在C语言贴吧发出提过问,但是回答还不素很明白- -!!

呵呵。。看了这个程序,应该是打印101至200之间的质数。
在程序开始时就声明leap=1了,在leap=0时程序跳出该次循环,继续运行下去;而当leap=1时,则显示输出当前值。
最后的leap=1是对leap的归位操作。

break是跳出for循环的。

if(leap)就是if(leap==1)
break是跳出for循环的
leap=1必须要加啊,因为当执行if(m%i==0)
{leap=0;break;} 后leap变为0,如果不加leap=1程序就不再进行循环了