您的位置:首页 > 其它

求1000以内素数平均值

2017-05-31 11:59 1536 查看

素数的定义

素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。

换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。

1和0既非素数也非合数。

合数是由若干个质数相乘而得到的,所以,质数是合数的基础,没有质数就没有合数。

算法原理

按照定义,从2到n-1判断有没有能整除n的数。如果有,则不是素数,否则,是素数,这样算法复杂度是O(n)。

再进一步分析,一个数不是素数就是合数, 那么一定可以由两个自然数相乘得到, 其中一个大于或等于它的平方根,一个小于或等于它的平方根。并且成对出现。所以我们只需从2一直算到sqrt(n)。

判断素数isPrime()

bool isPrime(int n){
if (n < 2) {
return false;
}
int i;
for (i = 2; i*i <= n; i++){
if (n%i == 0){
return false;
}
}
return true;
}


求1000以内素数平均值

#include<stdio.h>

void main()
{
int c=0,i=2;
double sum=0;
for(;i<=1000;i++)
{
if(isPrime(i)) {
sum+=i;
c++;
}
}
sum=sum/(double)c;
printf("1000以内素数的平均值为:%lf",sum);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: