您的位置:首页 > 其它

【模板】线性筛法求素数

2017-08-21 13:33 260 查看

时间复杂度为O(n)的线性筛函数:

 

#include<cstdio>
#include<algorithm>
#include<cstring>
const int maxn=1e5+5;
using namespace std;
bool prime[maxn];
int primes[maxn];
int num_prime=0,n;
void make_prime()
{
memset(prime,true,sizeof(prime));
prime[0]=prime[1]=false;
for(int i=2;i<=n;i++){
if(prime[i]){
primes[num_prime++]=i;
printf("%d ",i);
}
for(int j=0;j<num_prime&&i*primes[j]<=n;j++){
prime[i*primes[j]]=false;
if(!(i%primes[j]))break;
}
}
}
int main()
{
scanf("%d",&n);
make_prime();
return 0;
}
线性筛法求素数

 

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