您的位置:首页 > 其它

指定区间的素数统计的几种方法

2016-05-06 10:28 495 查看
<pre name="code" class="cpp">#include <iostream>
#include <math.h>
#define SIZE 100
using namespace std;
//判断number是不是素数
bool isPrime(int number){
if(number<=1)
return false;
for(int i=2;i<=sqrt((double)number);++i){
if(0==number%i)
return false;
}
return true;
}
//计算区间内所有的素数
int countPrimesInRange(int prime[],const int lower,const int upper){
int count=0;
for(int i= lower;i<=upper;++i){
if(isPrime(i))
++count;
else
prime[i-lower+1]=1;
}
return count;
}
//计算小于n的所有素数
void countPrimeLessThanN(int prime[],const int n){
int i=2;
int mid = n/2+1;
while(i<=mid){
for(int j = i+1; j<= n; ++j){
if(0== prime[j] && 0 == j % i)
prime[j] = 1;
}

++i;
while(prime[i] == 1)
++i;
}
prime[1]=1;
}

int main()
{
int prime[SIZE +1]={0};
int prime2[SIZE+1]={0};
int n=0;

cin>>n;
countPrimesInRange(prime,1,n);
cout<<endl;
int k=1;
for(int i=1;i<=n;i++){
if(0 == prime[i]){
++k;
cout<<i<<"\t";
}
if(8==k){
k=1;
cout<<endl;
}
}

countPrimeLessThanN(prime2,n);
cout<<endl<<"----------------------------------"<<endl;
k=1;
for(int i=1;i<=n;i++){
if(0 == prime2[i]){
++k;
cout<<i<<"\t";
}
if(8==k){
k=1;
cout<<endl;
}
}
int z;
cin>>z;
return 0;
}


运行结果如下图所示




                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: