筛法求素数
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; }
在此基础上优化的算法是 只存奇数 不存偶数 因为偶数一定不是素数
以上是关于筛法求素数的主要内容,如果未能解决你的问题,请参考以下文章