首页 > 代码库 > 【算法杂谈】线性筛

【算法杂谈】线性筛

【又是筛子】

【线性筛】

这种筛子是在原来埃氏筛的基础上优化而成的,我们先来看一下代码:)

【代码】

 

#include<iostream>#include<cstring>using namespace std;int prime[1100000],primesize,phi[11000000];bool isprime[11000000];void getlist(int listsize){    memset(isprime,1,sizeof(isprime));    isprime[1]=false;    for(int i=2;i<=listsize;i++)    {        if(isprime[i]) prime[++primesize]=i;         for(int j=1;j<=primesize && i*prime[j]<=listsize;j++)         {            isprime[i*prime[j]]=false;            if(i%prime[j]==0)break;        }    }}int main(){    long long n;    scanf("%lld",&n);    getlist(n);    for(int i=0;i<sizeof(prime);i++) if(prime[i]!=0) printf("%d\n",prime[i]);    //输出的最后的一个数是2~n中质数的个数 	system("pause");	return 0;}

 

【算法杂谈】线性筛