Eratosthenes筛选的时间复杂性:为什么它不是线性的?

时间:2018-06-15 00:52:11

标签: algorithm primes

以下是Eratosthenes筛选算法,用于查找所有素数的列表,最多可达N:http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes

该算法对我有意义。我能理解它的工作原理和原因。但我的时间复杂性有问题。通过维基:

算法的位复杂度为 O(n(log n)(log log n))位操作,内存要求为O(n)。[15]

然而,与我的直觉形成鲜明对比的是,该算法的时间复杂度应为O(n)。我是这么说的,因为如果我们从总体方面看到它:

开始时,序列[2:N]中的每个数字都被假定为素数。在算法结束时,序列的每个元素将被访问一次,以确定它是否真的是素数或另一个素数的倍数。每次访问都需要一段时间。所以最终的T(n)= O(n)。但这并不是维基所说的。我想知道我的分析中哪些部分出错了。

0 个答案:

没有答案