以下是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)。但这并不是维基所说的。我想知道我的分析中哪些部分出错了。