请那位高手看看这段C语言代码

来源:百度知道 编辑:UC知道 时间:2024/05/17 23:07:30
#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;}

if(leap) {printf("%-4d",m);h++;

if(h%10==0)

printf("\n");

}

leap=1;

}

printf("\nThe total is %d",h);

}

其中的leap有什么作用

leap是m是否为质数的标志。

leap=0表示m不是质数, h自增,来统计合数的数量,然后以每行10个打印出来

判断m是否为素数,是为1,否为0

这个程序是在输出[101,200]区间内的质数。

for(i=2;i<=k;i++)

if(m%i==0)

{leap=0;break;}

这一段程序用2到m的算术平方根之间的每一个数去除m,如果发现其中的一个数可以整除m,说明m不是质数,因此令leap=0,并且退出内循环,后面的

if(leap) {printf("%-4d",m);h++;
if(h%10==0)

printf("\n");

}
通过对leap的判断来确定当前的m是不是质数,如果是(当leap仍然等于1时),就输出。

leap=1;
令leap重新等于1,为下次判断做准备。