エラトステネスの篩の可視化 — 素数をフローチャートで
素数(1と自分自身でしか割り切れない数)を効率よく見つける古典的アルゴリズムです。やり方はシンプルで、小さい数から順に、その数の倍数を消していくだけ。最後まで消されずに残った数が素数です。下のグリッドとフローチャートを1ステップずつ進めて、数がふるい落とされていく様子を見てください。
🔀 フローチャート(いま実行中の処理が光ります)
いま何をしているか
エラトステネスの篩とは
2からNまでの数を並べ、小さい素数から順に、その倍数を消していく方法です。「篩(ふるい)」の名のとおり、合成数(素数でない数)をふるい落とし、残った数が素数になります。手順はこうです。
手順1: まだ消えていない一番小さい数 p(最初は2)は素数。
手順2: p の倍数(2p, 3p, …)をすべて消す。
手順3: 次に残っている数へ進み、繰り返す。p×p が N を超えたら終了(それ以上は新たに消える数がない)。
なぜ「p×p まで」で十分なのか
N以下の合成数は、必ず√N 以下の素因数を持ちます。だから p が √N(= p×p が N)を超えたら、まだ消えていない数はすべて素数と確定します。無駄な走査を省ける、賢い打ち切り条件です。
🧩 アルゴリズムをもっと動かすなら:ループと配列の操作は 擬似言語ステッパー、フローチャート付きの探索・並べ替えは 探索・ソート、最大公約数は ユークリッドの互除法 で確かめられます。
基本情報技術者試験ではこう出る
「エラトステネスの篩で素数を求める手順」「なぜ p×p(√N)まで調べれば十分か」「擬似言語での二重ループのトレース」などが問われます。小さい素数の倍数を消す → 残った数が素数という考え方を、上のグリッドとフローチャートで体に入れておきましょう。関連:ユークリッドの互除法 / 擬似言語ステッパー / 可視化一覧。