一般线性筛法求素数与快速线性筛法求素数模板

来源:互联网 发布:安康市江华软件 编辑:程序博客网 时间:2024/06/05 19:07

省时间。。。防健忘。。。
一般的

void make_prime()  {            memset(prime, 1, sizeof(prime));      prime[0]=false;           prime[1]=false;           int N=31700;            for (int i=2;  i<N;  i++)                 if (prime[i]) {                    primes[++cnt ]=i;               for (int k=i*i; k<N; k+=i)                      prime[k]=false;               }            return;  }     

快速的

#include<iostream>  using namespace std;      const long N = 200000;     long prime[N] = {0},num_prime = 0;      int isNotPrime[N] = {1, 1};     int main()      {               for(long i = 2 ; i < N ; i ++)                 {                      if(! isNotPrime[i])                             prime[num_prime ++]=i;                    for(long j = 0 ; j < num_prime && i * prime[j] <  N ; j ++)              {                                 isNotPrime[i * prime[j]] = 1;                if( !(i % prime[j] ) )                                     break;                     }              }              return 0;     }    
1 0
原创粉丝点击