エラトステネスの篩ジェネレーター(無料)- 素数一覧・第N番目の素数を検索

上限Nを指定するだけでエラトステネスの篩アルゴリズムを使い、素数の一覧をステップごとに可視化しながら生成。1から100の早見表に加え、最大100万までの範囲・第100万番目の素数のような大きな順位の逆引き検索にも対応した、登録不要のブラウザ完結型の無料ツールです。

1〜100 のエラトステネスの篩(早見表)

緑色のマスが素数、それ以外は篩によって消された合成数です。

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

1 は素数でも合成数でもない特殊な数のため、色分けの対象外です。

エラトステネスの篩とは

エラトステネスの篩は、紀元前3世紀のギリシャの学者エラトステネスにちなむ、素数を見つけるための古典的なアルゴリズムです。考え方は驚くほど単純で、2から順に「まだ消されていない数」を素数として確定し、その倍数をすべて消していくだけです。2の倍数を消し、次に残った3の倍数を消し、5の倍数を消す——この操作を上限の平方根まで繰り返すと、消されずに残った数がすべて素数になります。

このツールは上限 N を指定するだけで、最大100万までの素数一覧を生成します。篩い落としの過程をステップごとに表示するため、アルゴリズムが「どの素数で、どの数を消したか」を目で追えます。 さらに「第N番目の素数は何か」という逆引き検索にも対応しており、第100万番目といった大きな順位も調べられます。すべてブラウザー内で計算するため、入力した値がどこかへ送られることはありません。

素数一覧を生成する手順

  1. 上限 N を入力する 2以上1,000,000以下の整数を指定します。まずは100など小さな値で試すと、篩の仕組みがよく見えます。
  2. 素数の個数と最大の素数を確認する N以下に素数がいくつあるか(π(N))と、N以下で最大の素数が表示されます。
  3. 篩い落としのステップを追う 上限が小さい場合は、どの素数を使ってどの数を消したかが段階ごとに表示されます。
  4. 第N番目の素数を逆引きする 順位を入力すると、その順位にあたる素数が求められます。

使いこなすためのヒント

  • エラトステネスの篩は、2 以上の整数から素数の倍数を順に消していくことで効率的に素数一覧を得られるアルゴリズムです。
  • 上限 N を 400 以下に設定すると、どの素数がどの数を篩い落としたかをステップごとに確認できます。
  • 「第 1,000,000 番目の素数は何か」のような大きな順位の逆引き検索にも対応しており、桁数の大きい素数の存在確認に便利です。
  • 生成した素数一覧はブラウザ内でその場で計算されるため、サーバーへのデータ送信は発生しません。

こんなときに使えます

アルゴリズムの学習

計算量 O(n log log n) の代表例として教科書に必ず登場します。実際の動きを見ながら理解を固められます。

プログラミングの実装を検証する

自分で書いた篩の実装が正しい素数列を返しているか、このツールの出力と突き合わせて確認できます。

素数の分布を眺める

上限を変えながら π(N) の増え方を見ると、素数定理が述べる「N / log N におおよそ従う」傾向が体感できます。

暗号の話題の下調べ

RSA など公開鍵暗号は大きな素数に依存します。素数がどれくらいの密度で存在するかを掴む入口になります。

素数と篩の用語

素数
1とその数自身以外に正の約数を持たない、2以上の自然数です。1は素数に含めません。
合成数
素数でない2以上の自然数です。篩で消されていくのはこの数たちです。
π(N)
N以下の素数の個数を表す関数で、素数計数関数と呼ばれます。
篩い落とし
素数の倍数に印を付けて候補から除外する操作です。アルゴリズムの名前の由来になっています。
平方根までで十分な理由
Nの平方根を超える素数の倍数は、それより小さい素数の倍数としてすでに消されているためです。
素数定理
π(N) が N / log N に漸近するという定理です。素数がまばらになっていく速さを述べています。

よくある質問

紀元前3世紀の数学者エラトステネスが考案したとされる素数判定法で、2 から順に整数を並べ、素数の倍数を機械的に消していくことで残った数がすべて素数になるという仕組みです。単純な操作の繰り返しだけで素数を求められるため、コンピュータでの実装にも適しています。

本ツールはブラウザ内での計算のため、上限は 1,000,000 までとしています。それ以上の範囲を扱うと計算量が大きくなり、ブラウザの動作が重くなる可能性があるための制限です。

素数定理から第 N 番目の素数のおおよその上限値を見積もり、その範囲でエラトステネスの篩を実行して求めています。第 1,000,000 番目までの逆引き検索に対応しています。

計算結果が多い場合は最初の 1,000 個までを表示し、それ以降は件数のみをまとめて表示します。ステップごとの可視化は上限 400 以下の入力時のみ対応しています。
ツールくん

余談ですが ― 2000年前のアルゴリズムが今も使われる理由

エラトステネスの篩は、紀元前3世紀にアレクサンドリア図書館の館長を務めた古代ギリシャの学者エラトステネスが考案したと伝えられる、現存する最古の素数生成アルゴリズムの一つです。2000年以上前に考案された手法が、コンピュータサイエンスの教材として今なお使われ続けている点は、このアルゴリズムの単純さと美しさを物語っています。

篩の仕組みは驚くほど単純です。2 から順に数を並べ、まだ消されていない最小の数を素数として確定し、その倍数をすべて消していく。この操作を √N まで繰り返すだけで、N 以下のすべての素数が判明します。1つの数が素数かどうかを個別に判定する試し割り法よりも、まとめて一覧を求めたい場合にはるかに効率的です。

巨大な素数を探す競争は現在も続いており、GIMPS(Great Internet Mersenne Prime Search)などの分散コンピューティングプロジェクトが数千万桁を超えるメルセンヌ素数を発見し続けています。エラトステネスの篩自体は巨大な素数の発見には使われませんが、その基本思想(倍数を機械的に除外する)は、より高度な素数判定アルゴリズムの土台にもなっています。