68. 「エラトステネスの篩」の計算量はとりあえず O(N log N) で抑えられる
「エラトステネスの篩」は素数列挙に使われる効率的なアルゴリズムです。
- 「2」から「対象とする最大値」までを「素数候補」とする
- 残っている数のうち最小値を「素数」と判定して「素数候補」から除外する
- 2. で素数と判定した倍数を、全て「素数候補」から除外する
- 「素数候補」が空なら終了、空でないなら 2. に移動
このアルゴリズムの計算量ですが、「対象とする最大値」を として になるらしいです。ただ、こちらの証明は難しいらしく、もっと簡単に で抑えられることを示せます。
エラトステネスの篩で「素数候補からの除外」操作を行う対象は、素数と判定した数を として高々 個あります。つまり、エラトステネスの篩で素数候補である数を見る回数を とすると、以下の式が成り立ちます。
よって、 は で抑えられることが分かりました。