ウィキペディアから:
アルゴリズムの複雑さは
O(n(logn)(loglogn))
ビット演算です。
どうやってそこにたどり着きますか?
複雑さにこのloglogn
用語が含まれているということは、sqrt(n)
どこかにあることを私に教えてくれます。
最初の100個の数値(n = 100
)でふるいを実行していると仮定します。数値を複合としてマークするのに一定の時間がかかると仮定すると(配列の実装)、使用する回数は次のmark_composite()
ようになります。
n/2 + n/3 + n/5 + n/7 + ... + n/97 = O(n^2)
そして、次の素数を見つけるために(たとえば、7
の倍数であるすべての数を取り消した後にジャンプするために5
)、操作の数はになりますO(n)
。
したがって、複雑さはになりますO(n^3)
。同意しますか?