(模板)线性筛素数

—————————————————————————————————————————————————— —————————————————————前排护眼——————————————————————— ——————————————————————————————————————————————————

#include<bits/stdc++.h>
using namespace std;    
const long N = 10000050;   
long prime[N] = {0};    //记录质数
long num_prime = 0;     //表示质数数量
int isNotPrime[N] = {1, 1};    //记录n是否为质数  
int main()    
{     
         for(long i = 2 ; i < N ; i ++){
                       
        if(! isNotPrime[i]){        // i为质数,则记录
             prime[num_prime ++]=i;
        }
        
        
        for(long j = 0 ; j < num_prime && i * prime[j] <  N ; j ++){    // 质数*i为合数,记录
                  
                isNotPrime[i * prime[j]] = 1;  
                  
              if( !(i % prime[j] ) )  //防止重复筛选       
                break;           
        }  
              
    }        
}

猜你喜欢

转载自www.cnblogs.com/xiaozezz/p/11687612.html