筛选生成素数
2014-04-08 21:20
253 查看
/* 筛选生成素数 */ #include<iostream> #include<cstring> #include<cstdio> #include<time.h> using namespace std; const int N=10000000; //-------------------------------------- //最为简便的筛法—埃拉托斯特尼筛选法 int prime1[N+10]={0},flag1[N+10]={0}; int sum1=0; void selectPrime1() { int i,j; for(i=2;i<=N;i++) { if(flag1[i]==0) { for(j=2;j*i<=N;j++) { flag1[j*i]=1; } } } for(i=2;i<=N;i++) { if(flag1[i]==0) { prime1[sum1++]=i; } } } //----------------------------------------- //优化算法—欧拉筛法—时间复杂度可优化至O(n) int prime2[N+10],flag2[N+10]={0}; int sum2=0; void selectPrime2() { int i,j; for(i=2;i<=N;i++) { if(flag2[i]==0) prime2[sum2++]=i; for(j=0;j<sum2;j++) { if(i*prime2[j]>N) break; flag2[i*prime2[j]]=1; if(i%prime2[j]==0) break; } } } //---------------------------------------- int main() { selectPrime1(); long time=clock(); selectPrime2(); for(int i=0;i<100;i++){ cout<<prime1[i]<<" "<<prime2[i]<<endl; } cout<<" Time : "<<time<<" "<<clock()-time<<endl; return 0; }
相关文章推荐
- 素数生成和素数测试--筛选法
- 生成素数 筛选法 C语言
- 生成100000以内的素数XML文件的Demo(Jdom写成)
- filter筛选素数 js
- hdoj 4715 Difference Between Primes 素数筛选+二分查找
- LightOJ 1259 Goldbach`s Conjecture (哥德巴赫猜想 + 素数筛选法)
- 用筛选法求解素数
- LightOj 1236 Pairs Forming LCM (素数筛选&&唯一分解定理)
- 素数筛实现素数的快速筛选
- 埃氏筛选与线性筛选求素数
- 素数生成算法
- 高效生成素数
- 线性筛选素数法
- 算法之素数的快速筛选两种方式
- JavaScript使用filter方法实现100以内素数的快速筛选
- 1928 Prime Distance 素数筛选法 ,筛选一段区间的素数
- POJ 2689 Prime Distance(素数筛选)
- PHP判断素数,循环,筛选——默认可执行时间秒数,默认可执行空间。用来测试运行效率
- 每日一算法:筛选法求素数
- 筛选求n以内素数并返回个数