素数在OI中的应用很广
很多题都会用到素数,那么如何得到素数就是件很重要的事了
暴力枚举并判断?当然可以但实在太暴力了一点
考虑到如果一个数i是素数,那么i的倍数显然不可能是素数
由此我们可以通过不断的筛去不是素数的数,从而得到剩下的素数
----------------------------------------------------------------------------------------------
算法1.朴素算法:
假设我们要得到1~10中的素数
那么首先我们已知1不是素数,最小的素数为2,先列出一个1~10的数组
1 2 3 4 5 6 7 8 9 10
直接将1划去得到:
1 2 3 4 5 6 7 8 9 10
从2开始筛去它的倍数:
1 2 3 4 5 6 7 8 9 10
然后我们向后接着找是素数的数,继续以3来筛去它的倍数:
1 2 3 4 5 6</