帮帮分析一下.谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/08 13:22:31
#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);
}

k=sqrt(m+1);换成k=sqrt(m);可以吗?为什么要加1

如何理解{leap=0;break;}
if(leap) {printf("%-4d",m);h++;
if(h%10==0)
printf("\n");
能解释一下吗?谢谢
判断101-200之间有多少个素数,并输出所有素数。

k=sqrt(m+1);换成k=sqrt(m);是可以的,在这个程序中,这是必须换的,如果用m+1,那么下面的i<=k就要换成i<k才可以。

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

这一段表示,只要有一个i可以整除m就说明m不是质数,此时就将leap设置为0作一个标记,然后退出循环,之后对leap进行判断,如果leap不等于0,就说明所有的i都不能整除m,于是就输出这个m,并使h增1,h是一个计数器,用于记录到目前为止找到的质数个数.

if(h%10==0)
printf("\n");

如果h可以被10整除,就输出一个换行符进行换行,这样可以确保每行最多输出10个质数。