筛法求素数

Posted dyhaohaoxuexi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了筛法求素数相关的知识,希望对你有一定的参考价值。

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

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

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

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

代码:

for(i=2; i<N; i++)
  if(i%2) 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;
   }

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

 

以上是关于筛法求素数的主要内容,如果未能解决你的问题,请参考以下文章

一般筛法求素数+快速线性筛法求素数

转载一般筛法求素数+快速线性筛法求素数

筛法求素数

用筛法求之N内的素数。

普通方法求素数与筛法求素数比較

筛法求素数模板1