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

来源:互联网 发布:怎么处理文件集中 编程 编辑:程序博客网 时间:2024/06/06 10:59
<pre name="code" class="cpp">#include <iostream>#include <math.h>#define SIZE 100using 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;elseprime[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;}

运行结果如下图所示


                                             
1 0