解题思路 首先,我们考虑一下整个数组都是由质数构成的情况。 当我们要将质数 x x x 向后移 k k k 个时,如果我们可以知道质数 x x x 在质数数组的下标 j j j,那么就可以通过 p r i m e s [ j + k ] primes[j + k] primes[j+k] 来获取向后移 k k k 个的质数。因此,我们需要在线性筛预处理时,记录下质数的
我们主要介绍两种高效的找质数的方法。 1、埃式筛法 对于一个质数x,我们知道x的倍数肯定不是质数了,如:2是质数,所有2x2,2x3,2x4这些都不是质数了。我们利用一个数组v来进行标记,没被标记的就是质数了。时间复杂度为 O ( N l o g l o g N ) O(NloglogN) O(NloglogN) 代码: //埃式筛void primer(int n){memset(v,0,s