1. 程式人生 > >素數的快速篩法(埃氏篩法模板)

素數的快速篩法(埃氏篩法模板)

++ clas bool rim 篩法 pan div 記錄 return

int prime[maxn];//第i個素數
bool is_prime[maxn];//is_prime[i]為true表示i是素數
int sieve(int n)//返回n以內的素數
{
    int cnt=0;
    for(int i=0;i<=n;i++)
        is_prime[i]=true;
    is_prime[0]=is_prime[1]=false;
    for(int i=2;i<=n;i++)
        if(is_prime[i])
        {
            prime[cnt++]=i;//邊篩邊記錄素數
            
for(int j=2*i;j<=n;j+=i) is_prime[j]=false; } return cnt; }

時間復雜度:O(nlog2n)

素數的快速篩法(埃氏篩法模板)