📜  Eratosthenes筛的时间复杂度如何为n * log(log(n))?

📅  最后修改于: 2021-04-29 14:44:24             🧑  作者: Mango

先决条件:蛇纹石筛

什么是Eratosthenes算法的筛网?
为了对其进行分析,让我们取一个数字n ,任务是打印小于n的质数。因此,根据Eratosthenes筛的定义,对于每个素数,它必须检查素数的倍数并将其标记为复合数。该过程一直持续到最高素数小于n的值p为止。

了解Eratosthenes筛子的n * log(log n)时间复杂度

  1. 如果假定将一个数字标记为复合数字所花费的时间是恒定的,则循环运行的次数等于:

  2. 从上面的方程式中取n个公共点,可以将上面的方程式重写为:
  3. 可以通过质数之和的谐波级数证明如下:

    素数和的谐波级数证明:
    为了理解证明,先决条件是调和级数和泰勒级数展开式

    • 让我们看一个等式:
    • 上式的泰勒级数展开式为:
    • x = 1放在上面的公式中,我们得到以下关系:

      让我们将上面的等式标记为1

    • 根据欧拉的产品公式,

    • 用上式中的s = 1 ,我们得到

    • 在将日志应用于双方时:
      ul
    • 通过简化上述等式,它变为:

    • 在上式中, 1> p -1 > -1
    • 因此,我们可以对上述方程式的右边使用taylor级数展开。
    • 将其代入上式后,我们得到:

      其中p是质数。

    • 关于扩大内部求和;

    • 以上系列是收敛的。因此,以上系列可以近似为:
    • 因此,在代入和重写方程式时;我们得到

      其中p是质数。

    • 从初始等式1 ,我们可以最终得出以下结论:

      其中p是素数之和。
  4. 将其代入等式后,我们得到的时间复杂度为:

因此,Eratosthenes筛的时间复杂度为n * log(log(n))

参考:质数倒数之和的和