先决条件:蛇纹石筛
什么是Eratosthenes算法的筛网?
为了对其进行分析,让我们取一个数字n ,任务是打印小于n的质数。因此,根据Eratosthenes筛的定义,对于每个素数,它必须检查素数的倍数并将其标记为复合数。该过程一直持续到最高素数小于n的值p为止。
了解Eratosthenes筛子的n * log(log n)时间复杂度
- 如果假定将一个数字标记为复合数字所花费的时间是恒定的,则循环运行的次数等于:
- 从上面的方程式中取n个公共点,可以将上面的方程式重写为:
- 可以通过质数之和的谐波级数证明如下:
素数和的谐波级数证明:
为了理解证明,先决条件是调和级数和泰勒级数展开式。- 让我们看一个等式:
- 上式的泰勒级数展开式为:
- 将x = 1放在上面的公式中,我们得到以下关系:
让我们将上面的等式标记为1 。
- 根据欧拉的产品公式,
- 用上式中的s = 1 ,我们得到
- 在将日志应用于双方时:
ul - 通过简化上述等式,它变为:
- 在上式中, 1> p -1 > -1
- 因此,我们可以对上述方程式的右边使用taylor级数展开。
- 将其代入上式后,我们得到:
其中p是质数。
- 关于扩大内部求和;
- 以上系列是收敛的。因此,以上系列可以近似为:
- 因此,在代入和重写方程式时;我们得到
其中p是质数。
- 从初始等式1 ,我们可以最终得出以下结论:
其中p是素数之和。
- 让我们看一个等式:
- 将其代入等式后,我们得到的时间复杂度为:
因此,Eratosthenes筛的时间复杂度为n * log(log(n))
参考:质数倒数之和的和