筛法求素数

弱鸡准备校赛的时候看了一下最简单的筛法求素数:

开一个bool数组 奇数为true 偶数为false 因为偶数肯定不是素数嘛

然后遍历 如果a[i]==true 就把所有的i的倍数全设为 false

如此遍历到 sqrt(n)就将所有的小于n的素数全部筛出来了

代码:

for(i=2; i<N; i++)
  if(i%2==0) prime=false;
  else prime=true;
   for(i=3; i<=sqrt(N); i+=2)
   {   if(prime)
       for(j=i+i; j<N; j+=i)

            prime=false;
   }

在此基础上优化的算法是 只存奇数 不存偶数 因为偶数一定不是素数

原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/10699427.html