sqrt(m)就是m的平方根。
(int)sqrt(m)就是m的平方根的整数部分。
就是说比如,要判断97是否一个素数,只要从2~9判断不能整除97,就可以下定论,97是一个素数了。
这是因为如果x能被a整除,则x必也能被x/a整除。若a<>x/a,则必有一个较小的因子<√x
若a==x/a,则必有a==√x
所以,只要从2~√m判断,就能确定m是否素数了。
#include"stdio.h"
#include"math.h"
int main()
{
int a,i,q,p=0;
float s;////////////////////////////////开方的结果不是整数
printf("101-200以内的素数:\n");
for (a=101;a<=200;a++)
{ q=0;
s=sqrt(a);
for(i=2;i<=s;i++)
{
if(a%i!=0)
q++;
}
if(q==(int(s-1)))////////////////////////////应该是-1而不是-2
{
p++;
printf("%d\n",a);
}
}
printf("素数的个数是:%d\n",p);
return 0;
}
温馨提示:答案为网友推荐,仅供参考