这是有问题的算法,伪代码:
list.add(2)
for (i = 3 to n)
isPrime=true
for each (j in list)
if ((i mod j) = 0)
isPrime=false
break
if (isPrime)
list.add(i)
return list
今天我的助教告诉我这个算法的复杂度为 O(n^2),但我很确定这是不正确的,特别是考虑到大约有 n/ln(n) 个素数直到任何 n,所以内部如果 n 本身是素数,则循环在其最后一次迭代中的迭代次数不会超过 n/ln(n) 次。但是我认为它实际上低于 O(n^2/ln(n)) ,但我不确定如何确定它实际上是什么。例如,每个偶数只迭代第二个循环两次。