素数筛选
2017-04-06 14:34
190 查看
主要有两种一种是埃氏筛选法,一种是欧拉筛选法,欧拉筛选法是埃式筛选法的改进。 #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> using namespace std; const int MAXN=1000; bool isPrime[MAXN]; int Prime[MAXN]; int PriN; //埃式筛选法 void solve(int N){ PriN=0; memset(isPrime,true,sizeof(isPrime)); isPrime[0]=isPrime[1]=false; for(int i=2;i<=N;i++){ if(isPrime[i]){ Prime[PriN++]=i; for(int j=i*i;j<=N;j+=i) isPrime[j]=false; } } } //欧拉筛选法 void Eular(int N){ PriN=0; memset(isPrime,true,sizeof(isPrime)); isPrime[0]=isPrime[1]=false; for(int i=2;i<=N;i++){ if(isPrime[i]) Prime[PriN++]=i; for(int j=0;j<PriN;j++){ if(i*Prime[j]>N) break; isPrime[i*Prime[j]]=0; if(i*Prime[j]==0) break; } } } int main(){ int N=100; solve(N); for(int i=0;i<PriN;i++) cout<<Prime[i]<<" "; cout<<endl; cout<<"-----------------------------------------"<<endl; Eular(N); for(int i=0;i<PriN;i++) cout<<Prime[i]<<" "; cout<<endl; }
相关文章推荐
- LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)
- [tips]筛选特定区间内素数个数
- 素数及素数筛选算法训练基础题(一)
- 筛选求n以内素数并返回个数
- Facebook Hacker Cup 2015 Round 1--Homework(筛选法求素数)
- poj2635The Embarrassed Cryptographer(同余模+素数筛选+高精度求模)
- 一个根据筛选法求出100以内的所有素数的小程序
- 素数筛选法<单向链表实现>
- CodeForces114E——Double Happiness(素数二次筛选)
- 筛选素数,打表,区间内特定元素的个数
- 筛选法求素数
- 1928 Prime Distance 素数筛选法 ,筛选一段区间的素数
- 筛选法求素数模板
- 生成素数 筛选法 C语言
- poj:2689--用筛选法选素数求区间[L,U]的所有素数
- 埃氏筛选素数及其变形
- HDU1397_Goldbach's Conjecture_素数筛选法
- C/C++中的素数筛选
- openoj的一个小比赛(F题解题报告)poj3978(dp+素数筛选)
- 艾拉斯托尼素数筛选法