回 3-3 分野 3 整数と余り
素数判定は、
読み終えたら素数の
この頁の流れ
下の
1000003 は 素数か、 何回割れば 分かるのか
1000003 が
素数は、
素数判定は、
数を 入れて判定する
下のnums の
動かす 素数判定 (数を書き換えて動かす)
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
1 素数でない
2 素数 1
91 約数 7
97 素数 5
1000003 素数 500
999999000001 素数 50000091 は
試し割りは √n まででよい理由
n が
つまり、
さらに、
| 判定のしかた | 1000003 の |
|---|---|
| 2 から | 1000001 回 |
| 2 から | 999 回 |
| 2 と、 | 500 回 |
エラトステネスの篩
1 から
- 2 から
N までの 数を 並べ、 全部に 「素数かもしれない」の 印を付ける - 印の
残っている 一番小さい 数 p は 素数。 p × p から、 p の 倍数の印を消す - p × p が
N を 超えたら 止める。 印の 残っている 数が 全部の素数
倍数を
篩で
動かして確かめる
1 本目は、
動かす 割る範囲を変えて回数を比べる
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
全部 1000001
√nまで 999
奇数 500
√n 1000全部で
2 本目は、
動かす エラトステネスの篩
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
25 個
2 3 5 7 11 13 17 19 23
29 31 37 41 43 47 53 59 61
67 71 73 79 83 89 97
100万以下 78498
印を消した回数 2122048100 以下の素数は 25 個で、
3 本目は、
動かす 試し割りと篩の手間を比べる
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
1000 5456 1411
10000 118756 16981
100000 2755286 193078N が
4 本目は、
動かす フェルマーの判定と 561
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
91 False
True
互いに素な a 319
通った a 31991 は、
5 本目は、
動かす ミラー・ラビン法で大きな数を判定
▶ 実行ボタンを押すと結果がここに表示されます
実行すると、次の通りに出ます
561 False
1000003 True
1000000007 True
2305843009213693951 True
2147483662032385529 False561 は
素数判定は、 どこで外れるか
1 と 2 の扱い
1 は
小数の √ で 範囲がずれる
int(math.sqrt(n)) は、int(math.sqrt(n)) はmath.isqrt(n) か、d * d <= n の
フェルマーの 判定だけで決める
4 本目の
篩の大きさ
篩は
仕事と コンテストで どう使うか
素数判定と
- 暗号の
鍵。 RSA の 鍵は、 数百桁の素数を 2 つ選んで 作る。 乱数で 候補を 作り、 ミラー・ラビン法のような 判定に 何度も かけて 素数を 選ぶ。 FIPS 186-5 は、 こうした 素数の 作り方と 判定の 回数を 決めている - 競技プログラミング。
「N 以下の 素数を 数える」 「素因数分解を 何度も 行う」問題は、 先に 篩で 表を作る。1 つの大きな 数の 判定なら、 ミラー・ラビン法 - 素因数分解。
篩で 「一番小さい 素因数」を 表に しておくと、 どの 数も 割り算を 繰り返すだけで 素因数分解できる - ハッシュ。
ハッシュ表の 大きさや、 ハッシュの 式に 掛ける 数に、 素数を 使うことがある
よくある問い
1 は 素数ですか
素数では
素数は 無限に ありますか
無限に
一番大きな 素数は いくつですか
素数は
素数判定の 計算量は どの くらいですか
試し割りは
確認クイズ
答えだと
1 問目
100 以下の
2 問目
試し割りで
3 問目
561 に
説明課題
「n が
自分の
この回の 先の一歩
前計算の
もっと深く
この
一次資料
どれも 2026年10月30日に開いて、
- A014233 (OEIS、英語)。最初の
n 個の 素数を 底に した ミラー・ラビン法を すり抜ける、 一番小さい 奇数の 合成数の 表。 底が最初の 12 個の素数なら 318665857834031151167461 - A002997 Carmichael numbers (OEIS、英語)。カーマイケル数の
一覧で、 一番小さいのが 561 であること - There are infinitely many Carmichael numbers (W. R. Alford、
A. Granville、 。カーマイケル数がC. Pomerance、 Annals of Mathematics 139、1994年、英語) 無数にあること - A000040 The prime numbers (OEIS、英語)。素数の並び
- List of Known Mersenne Prime Numbers (GIMPS、英語)。2^136279841 − 1 が
41024320 桁で、 表の 一番下 (一番大きい) の メルセンヌ素数であること - GIMPS の発表 (2024年10月21日、英語)。2^136279841 − 1 の
発見の発表 - FIPS 186-5 Digital Signature Standard (NIST、英語、2023年2月)。RSA の
鍵に 使う 素数の 作り方と、 ミラー・ラビン法による判定 - math.isqrt (Python 公式文書、英語)。整数の
平方根の 整数部分を、 小数を 使わずに返すこと - 素数判定 (Wikipedia 日本語版)。試し割り、
確率的な 判定法、 AKS 素数判定法と計算量
次へ
分野 3 整数と余りの回
- 3-1最大公約数と互除法約数、
素数、 ユークリッドの互除法頁で読む - 3-2余りと合同式余りの
足し算と 掛け算、 繰り返し二乗法頁で読む - 3-3素数を速く探す試し割りは
√n まで、 エラトステネスの篩この回