请那位高手看看这段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有什么作用
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,为下次判断做准备。