計算ツール
数学整数論素数中学入試暗号

素数判定・素因数分解 計算ツール|大きい数も対応、素数定理・RSA暗号・OEIS完全対応

任意の自然数について素数か合成数かを瞬時に判定し、素因数分解・約数一覧・前後の素数を同時算出します。素数はユークリッドが「無限に存在する」ことを証明した数学の基本粒子であり、RSA暗号・楕円曲線暗号・ハッシュ関数・乱数生成・誤り訂正符号など現代情報社会の安全基盤にも直結する概念です。中学入試の約数問題から、双子素数・メルセンヌ素数・フェルマー素数といった発展話題、Miller-Rabin判定法、素数定理 π(x) ~ x/ln(x) まで、日本数学会・OEIS・IPA情報処理推進機構・大学入試センターの公的資料に基づき詳解します。

最終更新:2026-07-28/監修:計算ツールズ編集部

素数 判定計算機

素数の定義と算術の基本定理

素数(prime number)とは、1より大きい自然数のうち、1とその数自身以外に正の約数を持たないものです。2は唯一の偶数の素数で、3以降の素数はすべて奇数です。1は素数にも合成数にも分類されません(現代数学の慣習)。

算術の基本定理(素因数分解の一意性)により、2以上のすべての自然数は、素数の積として一意的に表現できます(順序を除いて一意)。

n = p₁^a₁ × p₂^a₂ × ... × pₖ^aₖ (pᵢ は素数、aᵢ は自然数)

この性質は整数論の出発点で、約数の個数公式 d(n) = (a₁+1)(a₂+1)...(aₖ+1)、約数の和 σ(n)、オイラーのφ関数、メビウス関数 μ(n) など、初等整数論のあらゆる関数の計算根拠になっています。ユークリッドは紀元前300年頃、素数が無限に存在することを背理法で証明し、数学史上最古の重要な証明の1つとされています。

100以下の素数表(25個)

1〜100の間には25個の素数があります。中学受験・高校数学Aの整数分野で覚えておくと便利です。

範囲素数個数
1〜102, 3, 5, 74個
11〜2011, 13, 17, 194個
21〜3023, 292個
31〜4031, 372個
41〜5041, 43, 473個
51〜6053, 592個
61〜7061, 672個
71〜8071, 73, 793個
81〜9083, 892個
91〜100971個
合計25個

1000以下は168個、10000以下は1229個、10万以下は9592個、100万以下は78,498個の素数があります(OEIS A000720「π(n)」)。

素数族の分類表

素数には特殊な性質を持つ「族(family)」がいくつも存在し、それぞれが数学史・情報科学で重要な役割を果たしています。

名称定義OEIS
双子素数差が2の素数ペア (p, p+2)(3,5)(5,7)(11,13)(17,19)A001359
いとこ素数差が4の素数ペア(3,7)(7,11)(13,17)A023200
セクシー素数差が6の素数ペア(5,11)(7,13)(11,17)A023201
三つ子素数(p, p+2, p+6) or (p, p+4, p+6)(5,7,11)(11,13,17)A007529
メルセンヌ素数2ⁿ−1 の形の素数3, 7, 31, 127, 8191, 131071A000668
フェルマー素数2^(2ⁿ)+1 の形の素数3, 5, 17, 257, 65537A019434
ソフィー・ジェルマン素数2p+1 も素数となる素数 p2, 3, 5, 11, 23, 29, 41A005384
安全素数(p−1)/2 も素数となる素数 p5, 7, 11, 23, 47, 59A005385
回文素数10進で回文になる素数11, 101, 131, 151, 181A002385
逆順素数10進の並びを逆にしても素数13(→31)、17(→71)、37(→73)A006567

2024年7月時点、既知の最大の素数は 2^136,279,841−1(41,024,320桁)のメルセンヌ素数(GIMPS 2024年発見)。世界的な分散計算プロジェクト GIMPS(Great Internet Mersenne Prime Search) が更新を続けています。

エラトステネスの篩(sieve of Eratosthenes)

N 以下のすべての素数を列挙する、紀元前3世紀のアルキメデスの同時代人・エラトステネス(Eratosthenes, 前276-前194)が考案したアルゴリズム。計算量 O(N log log N) で今も高速素数列挙の標準法です。

手順

  1. 2から N までの整数を並べる。
  2. 最小の未処理の数 p を素数とマークする(最初は p=2)。
  3. p の倍数(2p, 3p, ...)をすべて削除する。
  4. p² > N になるまで手順2-3を繰り返す。
  5. 残った数がすべて素数。

実装は数行のプログラムで書けます。日本情報オリンピック(JOI)や情報処理推進機構(IPA)の基本情報技術者試験でも頻出のアルゴリズムです。ビット圧縮による最適化(篩を2ビット×N/2に圧縮)や、線形時間版(Euler's sieve)、Segmented sieve(範囲分割で L1キャッシュ効率化)など多数の改良版が知られています。

素数判定法(試し割り・Miller-Rabin)

試し割り法(trial division)

2 から √n までの整数で順に割り、割り切れなければ素数と判定。計算量 O(√n)。小さい n には十分ですが、n が 10¹² を超えると実用的でなくなります。本ツールはこの方式で判定しています。

フェルマー小定理判定

フェルマー小定理「p が素数なら a^(p−1) ≡ 1 (mod p)」の逆を疑似判定に使う方法。ただし擬素数(Carmichael数 561=3·11·17 など)が存在するため単独では信頼できません。歴史的には最初の高速判定法の1つ。

Miller-Rabin判定法

強フェルマー判定の確率版。ランダムな a を k 個試すと誤判定確率 4⁻ᵏ 以下。k=20 で誤判定確率 10⁻¹² 未満。RSA公開鍵の候補生成で標準的に使用され、GPG・OpenSSL・OpenSSHの内部実装で採用されています。

AKS素数判定法

2002年にインドの3人組(Agrawal-Kayal-Saxena)が発表した、確定的多項式時間 O((log n)⁶) の判定アルゴリズム。理論的ブレークスルーで学術界にセンセーションを巻き起こしましたが、実装効率ではMiller-Rabinに劣ります。

素因数分解のアルゴリズム

素数判定と異なり、大きな数の素因数分解は計算量的に困難で、これがRSA暗号の安全性の根拠となっています。主要な因数分解アルゴリズム:

  • 試し割り法 — O(√n)。小さい n や少数の小さな素因数を持つ n には最適。
  • Pollard ρ法 — 期待計算量 O(n^(1/4))。中サイズ(10¹²〜10²⁰)の n に有効。
  • 2次篩法(Quadratic Sieve) — 100桁台まで有効。1980年代の主流。
  • 数体篩法(GNFS) — 現時点で最速。RSA-768(232桁)は2009年にGNFSで因数分解された。
  • Shor'sアルゴリズム(量子計算) — 多項式時間で因数分解可能。量子コンピュータ実用化でRSAが破られる懸念の根拠。IBMなどが数百量子ビットのシステムを開発中。

素数定理と分布

N 以下の素数の個数を π(N) と表すと、Gauss・Legendreの予想を経て 1896 年に Hadamard と de la Vallée Poussin が独立に証明した素数定理(Prime Number Theorem, PNT)により、次の漸近式が成立します。

π(N) ~ N / ln(N) (N → ∞)

これは「N の付近では、log N 個に1個の割合で素数が現れる」ことを意味します。より精密には、対数積分 Li(N) = ∫₂ᴺ dt/ln(t) が更に良い近似を与えます。

素数の個数(検算)

N実際のπ(N)N/ln(N)Li(N)
1044.346.17
1002521.730.13
1,000168144.8177.6
10,0001,2291,0861,246
100,0009,5928,6869,630
1,000,00078,49872,38278,628
10⁸5,761,4555,428,6815,762,209

リーマン予想(未解決)が正しければ、素数分布のより厳密な誤差評価が可能になります。リーマン予想はミレニアム懸賞問題(賞金100万ドル)の1つで、日本数学会・AMS の重点研究テーマの1つとされています。

応用場面(RSA暗号・情報オリンピック)

🔐 RSA公開鍵暗号

2つの大きな素数 p, q を選び、n=pq を公開鍵とする方式。素因数分解の困難さが安全性の根拠。SSL/TLS・HTTPS・SSH・PGP など現代インターネットの通信暗号のバックボーン。日本の CRYPTREC(暗号技術検討会) がガイドライン公開。

楕円曲線暗号(ECC)

有限体上の楕円曲線を用いた暗号方式。素数位数の群を利用し、RSAより小さい鍵長で同等の安全性を実現。TLS・Bitcoin・EdDSAなどで採用。

ハッシュ関数・乱数生成

ハッシュ関数の内部定数、線形合同法乱数の周期最大化にも素数が使用されます。Mersenne Twister(MT19937)は 2^19937−1 のメルセンヌ素数を周期に持つ、擬似乱数の事実上の標準。

誤り訂正符号

Reed-Solomon符号(QRコード・CD・DVDで使用)は有限体 GF(2ⁿ) 上で構築され、生成多項式に既約多項式(素数の類似)を使います。NIST・IEEEの通信規格に組み込まれています。

日本情報オリンピック(JOI)

素数篩・素因数分解・オイラーのφ関数・素数分布の問題が頻出。整数論はアルゴリズム設計の基本科目で、JOI公式サイトに過去問と解説あり。

中学受験・高校入試の約数問題

約数の個数・約数の和は素因数分解が基礎。「180の約数はいくつ?」「12と18の最大公約数は?」といった中学入試問題は素因数分解による解法が定石。SAPIX・日能研などの主要塾でも学習単元として扱われます。

よくある間違い・注意点

  • 1を素数に含める — 現代数学では1は素数ではありません。定義「1より大きい自然数で1と自身以外の正約数を持たない」で除外されます。1を素数とすると素因数分解の一意性が破れます。
  • 0を素数と誤解 — 0は自然数の範疇外の場合が多く、素数の定義対象外です。日本の学習指導要領で「自然数=1以上」が標準ですが、集合論では0を含める場合もあります。
  • 2を素数から除外 — 2は唯一の偶数の素数です。「偶数だから合成数」は誤り。素数の定義に「奇数」の条件はありません。
  • 91を素数と判定 — 91 = 7 × 13 で合成数ですが、100前後で「素数っぽい」と誤答されやすい代表例。試し割りで √91 ≒ 9.5 まで割れば7で割り切れることが確認できます。
  • √n までの試し割りを省略 — 素数判定では 2 から √n までの割り切れテストで十分。それ以上を試すのは無駄です(証明: n=ab なら min(a,b)≦√n)。
  • フェルマー数が全て素数と誤解 — Fermat数 Fₙ = 2^(2ⁿ)+1 は F₀=3〜F₄=65537 まで素数ですが、F₅ = 4,294,967,297 = 641 × 6,700,417 で合成数と Euler が発見。以降 F₅〜F₃₂ はすべて合成数と判明。
  • 大きな数の素数判定に試し割りを使う — n が10¹²を超えると試し割りは実用的でありません。Miller-Rabin・AKSなど高速判定法を使ってください。

学習指導要領・入試との対応

日本の学習指導要領における素数・素因数分解の扱いは以下の通りです。

  • 小学校算数(第5学年) ― 約数・倍数・公約数・最小公倍数を扱う。素数の概念は明示されないが、素因数分解の下地となる。
  • 中学校数学(第3学年) ― 学習指導要領上は「素数・素因数分解」が明示的に含まれる。因数分解の準備。
  • 高等学校数学A「整数の性質」 ― 素数・素因数分解、最大公約数・最小公倍数、合同式、ユークリッド互除法、n進法の学習(選択単元)。大学入試共通テストでも出題される。
  • 基本情報技術者・応用情報技術者(IPA) ― 素因数分解・RSA暗号・ハッシュ関数の理論的基礎として頻出。
  • 日本情報オリンピック(JOI) ― 素数篩・オイラーのφ関数などアルゴリズム問題として頻出。

参考文献・公的資料

素数・整数論の学習と応用について、以下の公的機関・学会のリソースを参照してください。

※本ツールは試し割り法(O(√n))を用いた実装のため、極めて大きい n(10¹⁶程度を超える)では判定に時間がかかるか結果が返らない場合があります。暗号用途で大きな素数を扱う場合は、Miller-Rabin確率的判定法や AKS 確定的判定法を実装した専門ライブラリ(Python SymPy、GMP、OpenSSL 等)、または OEIS A000040 の公表データを参照してください。RSA公開鍵の生成には、CRYPTREC/NIST FIPS 186-5 で規定される鍵長(現在2048bit以上を推奨)と、専門的なプロトコル遵守が必要です。

よくある質問(FAQ)

1は素数ですか?

1は素数ではありません(現代数学の慣習)。素数の定義「1より大きい自然数で1と自身以外に正約数を持たない」に該当しません。1を素数とすると、算術の基本定理「素因数分解の一意性」が破れます(例:6=2×3=1×2×3=1×1×2×3...)。合成数でもなく「単数(unit)」に分類されます。

2は素数ですか?

2は素数です。約数は1と2のみ。唯一の偶数の素数で、以降の素数はすべて奇数です。「偶数=合成数」は誤りで、素数の定義に「奇数」の条件はありません。

素数はどれくらいの頻度で現れる?

素数定理により、N の付近では「約 ln(N) 個に1個」の割合で素数が現れます。N=100 なら約4.6個に1個、N=10,000 なら約9.2個に1個、N=10¹⁰ なら約23個に1個。大きい N ほど素数はまばらになりますが、無限に存在します(ユークリッドの証明)。

91は素数ですか?

91は素数ではありません(合成数)。91 = 7 × 13。100前後で「素数っぽい」と誤答されやすい代表例。試し割りで 2, 3, 5, 7 まで割ると 7 で割り切れます。他にも 51=3×17、57=3×19、77=7×11、87=3×29、91=7×13、93=3×31、95=5×19、119=7×17 など、「一見素数」の合成数に注意。

大きい数が素数か判定するには?

10¹² 以下なら試し割り法で十分。それ以上はMiller-Rabin確率的判定法を使うのが標準。誤判定確率 4⁻ᵏ(k=試行回数)で、k=20 なら 10⁻¹² 未満。RSA公開鍵生成でも標準採用。理論的に確定な判定が必要なら AKS 判定法。Python SymPy の isprime() は内部で BPSW + Miller-Rabin を使い、実用的に確実です。

双子素数は無限に存在しますか?

未解決問題(双子素数予想)です。差が2の素数ペア (p, p+2) が無限に存在するかは、Zhang Yitang(張益唐)が2013年に「差が7000万以下の素数ペアが無限」を証明する大突破がありましたが、「差が2」までは詰め切れていません。ミレニアム関連の重要未解決問題の1つ。

リーマン予想と素数の関係は?

リーマン予想は「リーマンゼータ関数 ζ(s) の非自明な零点の実部がすべて 1/2 に等しい」という予想。もし正しければ、素数の分布に関する漸近誤差がより精密に評価できます。現在ミレニアム懸賞問題(賞金100万ドル)の1つ。日本数学会・AMS の重要研究テーマ。

RSA暗号はなぜ安全なのですか?

2つの大きな素数 p, q の積 n=pq を公開しますが、n から p, q を復元(素因数分解)することが計算的に困難であるためです。2048bit RSAの場合、現在の古典コンピュータでは実質的に不可能。ただし量子コンピュータ(Shorのアルゴリズム)が実用化されれば脅威となるため、耐量子暗号への移行が進んでいます(NIST の Post-Quantum Cryptography 標準化)。

素因数分解を高速に行うには?

小さい n(10⁶ 以下)なら試し割りで即答。中サイズ(10¹²〜10²⁰)なら Pollard ρ 法、大サイズ(10⁵⁰以上)なら 2次篩・数体篩法(GNFS)を使います。Python なら SymPy の factorint()、Wolfram Mathematica なら FactorInteger[] が実装済み。Msieveや YAFU といったオープンソース実装もあります。

約数の個数はどう計算する?

n = p₁^a₁ × p₂^a₂ × ... × pₖ^aₖ と素因数分解できるとき、約数の個数は d(n) = (a₁+1)(a₂+1)...(aₖ+1)。例:12 = 2² × 3 → (2+1)(1+1) = 6 個。12の約数は1,2,3,4,6,12の6個で一致。中学入試の頻出問題の解法根拠です。

メルセンヌ素数と完全数の関係は?

2ⁿ−1 が素数なら 2^(n−1) × (2ⁿ−1) は偶数の完全数(自分自身以外の約数の和が自分自身)。例:2²−1=3で6=1+2+3、2³−1=7で28=1+2+4+7+14。既知の完全数はすべて偶数で、奇数の完全数の存在は数論上の未解決問題です。

PythonやExcelで素数判定するには?

Python は from sympy import isprime, factorint; isprime(n); factorint(n)。Excel には直接の関数はありませんが、範囲内の素数判定なら =IF(SUMPRODUCT(--(MOD(N,ROW(INDIRECT("2:"&INT(SQRT(N)))))=0))=0,"素数","合成数") のようなUDFで対応可能。Google スプレッドシートでも同様、または App Script で isPrime 関数を定義できます。