c语言中如下程序什么意思?其中为什么要n=sqrt(m) ?

#include"stdio.h"

#include"math.h"
int main()
{
int m,n,i,s=0;
for(m=200;m<=300;m+=1)
{
n=sqrt(m);
for(i=2;i<=n;i++)
{
if(m%i==0) break;
}
if(i>n)
{
printf("%4d",m);
s=s+m;
}
}
printf("\素数和s=%d\n",s);
return 0;
}

n=sqrt(m) 为了减少素数的运算量 因为 n<sqrt(m) 之前的数判断完成后,后面的就不再需要判断了。
程序是求200-300间素数的和
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-21
判定m是不是素数,就要从2枚举到根号m,如果这个区间内所有数都不能被m整除,那么m就是素数
第2个回答  2013-11-21
开方, 这个是系统函数, 类似的还有pow(i,n) i为底数 n为指数.. 你看书上应该有系统函数的介绍
第3个回答  2013-11-21
1:200 -300 的素数和
2:平方根,比较到一个数的平方跟即可了,比除2好点。
第4个回答  2013-11-21
因为超过n的值不可能会是 素数
相似回答