两种快速筛选素数的方法:埃式和欧拉筛法

 两种筛选素数的方法:埃式和欧拉筛法

#include
#include
#include
#include
#include
#include
#define maxn 1050
using namespace std;
int a[maxn];
bool isprime[1000002];
int num[1000002];
//埃式筛选法 时间复杂度O(nlogn) 
void is_prim(int n){
	n++;
	fill(isprime,isprime+n,1);
	fill(num,num+n,0);
	isprime[1]=0;
	num[1]=0;
	for(int i=2;i Prime(int n){
	bool flag[n+1];//judge whether the number is prime(1 represent a prime,0 represent a non-prime
	fill(flag,flag+n+1,1);
	vector prime;
	int cnt=0;//the total number of primes 
	for(int i=2;i<=n;i++){
		if(flag[i]){
			prime.push_back(i);
			cnt++;
		}
		for(int j=0;jn) break;
			flag[i*prime[j]]=0;
			if(i%prime[j]==0) break;//exclude the non-prime number which is not minimum 
		}
	}
	return prime; 
} 

 

你可能感兴趣的:(ACM)