素因数分解 計算ツール|素数判定・約数列挙・GCD/LCM・整数論の基礎
任意の整数を素因数分解し、素数判定・約数の個数・約数の和・全約数一覧を瞬時算出。360 = 2³ × 3² × 5のような一意分解、10⁹までの高速判定、エラトステネスの篩・試し割り法の解説付き。中学高校数学の宿題から、GCD/LCM計算、RSA暗号の原理、メルセンヌ素数・GIMPSプロジェクトまで、京都大学・東京大学の教材や米国数学会(AMS)の公式資料に基づき解説します。
素因数分解 計算機
素因数分解と算術の基本定理
任意の2以上の整数 n = p₁^a₁ × p₂^a₂ × … × pₖ^aₖ(p_iは素数)
素因数分解とは、正の整数を素数のべき乗の積として表すことです。例えば 360 = 2³ × 3² × 5、1024 = 2¹⁰、2026 = 2 × 1013となります。この分解は算術の基本定理(素因数分解の一意性定理)により、順序を除いて一意に決定されることが証明されています。
素数の定義
- 1とその数自身以外に正の約数を持たない、2以上の自然数
- 最小の素数は2、最初の10個は 2, 3, 5, 7, 11, 13, 17, 19, 23, 29
- 1は素数ではありません(算術の基本定理の一意性が崩れるため)
- 2は唯一の偶数の素数(3以上の素数はすべて奇数)
- 素数は無限に存在する(ユークリッドの定理、紀元前300年頃)
合成数と素数の分布
合成数は2つ以上の素数の積で表される数です。素数定理(1896年アダマール・プーサン)により、n以下の素数の個数はおよそn / ln(n)で近似されます。100以下の素数は25個、1000以下は168個、100万以下は78,498個。素数は無限にありますが、大きくなるほど「まばら」になります。
計算アルゴリズム(試し割り法)
本ツールは試し割り法(trial division)を実装しています。2から√nまでの整数で順に割ってみるシンプルな方法で、10⁹程度までは高速に動作します。
手順
- iを2から順にnを割っていく
- i×i > n になるまで続ける(√n を超えたら残ったnは素数)
- 割り切れたらnを更新し、素因数のカウントを増やす
- 最後に残ったn>1があれば、それも素因数
効率化のポイント
大きな数(20桁以上)ではポラード・ロー法、二次篩法、一般数体篩法(GNFS)など高度な手法が必要です。世界最速の素因数分解記録はGNFSにより829ビット(250桁)の合成数を分解した2020年の記録。RSA-2048(2048ビット)を分解できる古典的アルゴリズムは実用上存在しません。
エラトステネスの篩
紀元前3世紀にエラトステネスが発明した、n以下の全素数を列挙する古典アルゴリズム。「2の倍数、3の倍数…」を順に消していき、残ったものが素数。時間計算量O(n log log n)で極めて効率的。中学の教科書に登場します。
100以下の素数早見表(全25個)
| 範囲 | 素数 | 個数 |
|---|---|---|
| 1〜10 | 2, 3, 5, 7 | 4個 |
| 11〜20 | 11, 13, 17, 19 | 4個 |
| 21〜30 | 23, 29 | 2個 |
| 31〜40 | 31, 37 | 2個 |
| 41〜50 | 41, 43, 47 | 3個 |
| 51〜60 | 53, 59 | 2個 |
| 61〜70 | 61, 67 | 2個 |
| 71〜80 | 71, 73, 79 | 3個 |
| 81〜90 | 83, 89 | 2個 |
| 91〜100 | 97 | 1個 |
| 合計 | 25個 | |
100以下の素数を暗記しておくと、中学高校の入試問題で素因数分解が瞬時に出せるようになります。
約数の個数・和の公式
素因数分解 n = p₁^a₁ × p₂^a₂ × … × pₖ^aₖ から、以下が直接計算できます。
約数の個数 τ(n) の公式
τ(n) = (a₁+1)(a₂+1)…(aₖ+1)
例: 360 = 2³ × 3² × 5 → τ(360) = 4×3×2 = 24個
約数の和 σ(n) の公式
σ(n) = (p₁^(a₁+1)-1)/(p₁-1) × … × (pₖ^(aₖ+1)-1)/(pₖ-1)
例: 360 → σ(360) = 15 × 13 × 6 = 1170
完全数・不足数・過剰数
- 完全数: σ(n) - n = n となる数(自身を除く約数の和が自身と等しい)。6, 28, 496, 8128...
- 不足数: σ(n) - n < n(自身より小さい)。ほとんどの整数がこれ
- 過剰数: σ(n) - n > n(自身より大きい)。12, 18, 20, 24...
完全数はメルセンヌ素数と1対1対応することが証明されており、2024年時点で既知の完全数は52個のみです(すべて偶数)。奇数の完全数の存否は未解決問題。
GCD/LCMへの応用
素因数分解は最大公約数(GCD)・最小公倍数(LCM)の計算に直結します。
公式
GCD(a,b) = 共通素因数の最小指数の積
LCM(a,b) = 全素因数の最大指数の積
例: GCD(360, 420) と LCM(360, 420)
- 360 = 2³ × 3² × 5
- 420 = 2² × 3 × 5 × 7
- GCD = 2² × 3 × 5 = 60(共通素因数の小さい方の指数)
- LCM = 2³ × 3² × 5 × 7 = 2520(全素因数の大きい方の指数)
- 関係式: GCD × LCM = a × b(360 × 420 = 60 × 2520 = 151,200)
ユークリッドの互除法
実務でGCDを高速計算する場合、素因数分解ではなくユークリッドの互除法を用います。「大きい数を小さい数で割った余りを取る」を繰り返すだけで、桁数の対数オーダーで計算完了。紀元前300年に発見されたアルゴリズムが現代のRSA・楕円曲線暗号でも使われています。
RSA暗号とセキュリティ
RSA暗号(1977年、Rivest・Shamir・Adleman)は、公開鍵暗号の代表格。「大きな合成数の素因数分解が困難」という数学的事実に安全性の基礎を置いています。
仕組みの概要
- 2つの大きな素数 p, q(通常1024ビット以上)を選ぶ
- n = p × q を計算(公開)、p, q は秘匿
- 公開鍵で暗号化、秘密鍵(p, qから導出)で復号
- 攻撃者は n から p, q を求めない限り復号不可能
安全性の根拠
2048ビット(617桁)のnを素因数分解するには、現存する最速アルゴリズムでも数千年〜数万年かかると推定されます。ただし量子コンピュータのショア(Shor)アルゴリズムが実用化されれば多項式時間で分解可能。米国NIST(国立標準技術研究所)は2024年に量子耐性暗号(CRYSTALS-Kyber等)の標準を確定し、移行を開始しています。
実際の応用
- HTTPS通信(TLS/SSL)の鍵交換
- 電子署名・PKI(公開鍵基盤)
- マイナンバーカードのICチップ内認証
- SSH・PGP等のセキュア通信
メルセンヌ素数・GIMPS
メルセンヌ素数は 2^p − 1 の形をした素数で、pも素数である場合に現れます。M₂ = 3, M₃ = 7, M₅ = 31, M₇ = 127...と続きます。
2024年時点の最大素数
M₁₃₆,₂₇₉,₈₄₁ = 2^136,279,841 − 1(約4,102万桁、2024年10月発見)が現時点の最大既知素数。この発見はGIMPS(Great Internet Mersenne Prime Search)という分散コンピューティングプロジェクトの成果。世界中のボランティアがCPUの空き時間を提供して探索しています。
完全数との関係
ユークリッドとオイラーの定理により、偶数の完全数はメルセンヌ素数 Mₚ を用いて 2^(p-1) × Mₚ の形で表されることが証明されています。新しいメルセンヌ素数の発見は、同時に新しい完全数の発見でもあります。
賞金と応用
EFF(電子フロンティア財団)は1億桁を超える素数の発見に15万ドルの賞金を提供。金融的な意味は薄いですが、疑似乱数生成器の周期分析、耐フォールト分散システムのテストなど数学以外にも応用があります。
場面別の使い方
中学数学(素因数分解の基本)
中学3年で最初に習う素因数分解。「12を素因数分解しなさい」→ 2²×3、「180を素因数分解しなさい」→ 2²×3²×5 が定番。テストでは筆算での樹形図を求められることが多いです。
高校数学(整数論)
高校の「数学A」で整数の性質を学びます。約数の個数と和、合同式、ユークリッドの互除法、不定方程式、フェルマーの小定理、鳩の巣原理まで。共通テスト・二次試験でも頻出分野。
分数の約分
分子分母の共通素因数を消去して既約分数にします。720/1080 → 720=2⁴×3²×5、1080=2³×3³×5 → GCD=2³×3²×5=360 → 720/1080 = 2/3。
プログラミング学習
「素数判定」「エラトステネスの篩」は競技プログラミング(AtCoder・LeetCode)の入門課題。時間計算量の理解、for/whileループ、配列操作の学習に最適で、Python・C++・JavaScriptで実装します。
暗号技術の基礎理解
ITエンジニア・セキュリティ人材の必修知識。RSA・楕円曲線・量子耐性暗号の理解には素因数分解の困難性が前提。基本情報技術者・応用情報技術者・情報処理安全確保支援士試験でも問われる分野。
音楽・拍子・周期
周期の異なる音の同期(2音の周期のLCM)、リズム分割、音階の周波数比、拍子記号(4/4・6/8等)の理解にも整数論的思考が役立ちます。倍音の分割は素数の性質と直結。
よくある間違い・注意点
- 1を素数と誤解 — 1は素数ではありません。算術の基本定理(素因数分解の一意性)を成立させるため、素数の定義から意図的に除外されています。
- 0の素因数分解を考える — 0は素因数分解の対象外。素因数分解は正の整数(2以上)に対して定義されます。1は「素因数を持たない」と扱います。
- 試し割りをnまで実行してしまう — √n を超えた時点で残ったnは素数と確定します。上限を√nにしないと、10⁹の判定に膨大な時間がかかります。
- 約数の個数を数え上げで計算 — 素因数分解 n = p₁^a₁ × … × pₖ^aₖ から τ(n) = (a₁+1)(a₂+1)…(aₖ+1) で瞬時に求まります。全約数を列挙する必要はありません。
- 合成数と素数の判定を混同 — 合成数は素数以外の2以上の整数(1は素数でも合成数でもない)。中学入試では「素数・合成数・1」の3分類が問われることがあります。
- 大きな数(20桁超)を試し割り法で分解しようとする — 実用範囲は10⁹〜10¹²程度まで。20桁超はポラード・ロー法、50桁超は数体篩法など高度な手法が必要。RSAの安全性の根拠です。
- 素数の分布を線形と誤解 — 素数はn/ln(n)個(素数定理)で、nが大きくなるほどまばらになります。100までに25個、1000までに168個、100万までに78,498個。
関連する定理・数学分野
- 算術の基本定理 ― 2以上の整数は素数の積として順序を除いて一意に表せる。素因数分解の理論的支柱。
- ユークリッドの定理 ― 素数は無限に存在する(紀元前300年、背理法による古典的証明)。
- 素数定理 ― n以下の素数の個数 π(n) は n/ln(n) に近づく。1896年にアダマールとプーサンが独立に証明。
- フェルマーの小定理 ― pが素数、aがpと互いに素なとき a^(p-1) ≡ 1 (mod p)。RSA暗号の基礎。
- Riemann仮説 ― リーマンゼータ関数の非自明零点はすべて実部1/2の直線上にある、という素数分布に関する未解決問題。100万ドルの懸賞金(クレイ数学研究所ミレニアム問題)。
- ゴールドバッハ予想 ― 4以上の偶数は2つの素数の和で表せる。18世紀提起、現在も未解決。
- 双子素数予想 ― 差が2の素数(11と13、17と19等)が無限にあるという予想。未解決。
- 整数論・解析的数論・代数的数論 ― 素数と整数の性質を扱う純粋数学の主要分野。
参考文献・公的資料
より深く整数論・素数を学びたい方向けの、大学・公的機関・国際学術団体の一次資料です。
- MathWorld: Prime Number ― Wolfram Researchによる数学百科事典。素数の定義・性質・歴史・関連定理を包括的に解説。
- OEIS: A000040 (素数の列) ― オンライン整数列大辞典。素数列の完全なデータベースと関連情報。
- GIMPS (Great Internet Mersenne Prime Search) ― 世界最大の素数探索プロジェクト。既知の最大素数と歴代記録、参加方法。
- Clay Mathematics Institute: Riemann Hypothesis ― ミレニアム懸賞問題の一つ、リーマン仮説の公式解説。
- American Mathematical Society (AMS) ― 米国数学会の学術誌Notices of the AMS。整数論・素数関連の最新研究を掲載。
- NIST Post-Quantum Cryptography ― 米国国立標準技術研究所による量子耐性暗号標準化プロジェクト。RSAの将来的な置き換え。
- 日本数学会 ― 日本の数学者による学術団体。整数論分科会が素数・数論の研究を推進。
- J-STAGE 数学(日本数学会) ― 日本数学会機関誌の電子アーカイブ。整数論の日本語論文を検索・閲覧可能。
- 文部科学省 学習指導要領(中学校数学) ― 中学3年で素因数分解を扱う根拠。学習指導要領の公式解説。
- Prime Pages (テネシー大学マーティン校) ― Chris Caldwell教授による素数専門情報サイト。歴代最大素数リスト、素数判定アルゴリズム解説。
よくある質問(FAQ)
1はなぜ素数ではないのか?
算術の基本定理(一意分解定理)を成立させるため、1を素数から除外しています。もし1を素数と認めると、12 = 2²×3 = 1×2²×3 = 1²×2²×3... と無限通りの分解が可能になり、一意性が崩れます。歴史的には1を素数と扱った時代もありましたが、19世紀以降の現代数学では1は素数でも合成数でもない「単数(unit)」とされます。
素数はどこまで見つかっている?
2024年10月時点で既知の最大素数はM₁₃₆,₂₇₉,₈₄₁ = 2^136,279,841 − 1(約4,102万桁)。GIMPS(Great Internet Mersenne Prime Search)により発見されました。素数自体は無限に存在することがユークリッドにより紀元前に証明されており、探索は今後も続きます。
試し割り法の限界は?
時間計算量O(√n)のため、実用範囲は10⁹〜10¹²程度まで。それを超えると計算時間が現実的でなくなります。20桁超はポラード・ロー法、50桁超は二次篩法、100桁超は一般数体篩法(GNFS)を用います。RSA-2048(617桁)の分解は現存するどのアルゴリズムでも実用時間内に不可能で、これがRSA暗号の安全性の根拠です。
GCDとLCMの関係式は?
GCD(a,b) × LCM(a,b) = a × b。素因数分解を共有する2数について、共通素因数の最小指数の積(GCD)と全素因数の最大指数の積(LCM)を掛けると、元の2数の積に等しくなります。中学数学の必須公式で、分数計算・時計問題・周期問題で頻用します。
完全数とは何か?
自分自身を除く約数の和が自身と等しい数。例: 6 = 1+2+3、28 = 1+2+4+7+14。ユークリッドとオイラーが偶数完全数の完全な特徴付けを与え、メルセンヌ素数 Mₚ から 2^(p-1) × Mₚ で生成されることが証明されています。2024年時点で既知の完全数は52個。奇数の完全数が存在するかは未解決問題。
RSA暗号はなぜ素因数分解が難しいから安全なのか?
2つの大きな素数p, qを掛けたn=pqは簡単に作れますが、逆にnからp, qを求める(素因数分解)には現存する最速アルゴリズムでも指数関数的な時間がかかります。2048ビットのnを分解するには数千年〜数万年の計算時間が必要と推定されており、これが暗号の安全性を支えています。量子コンピュータのShorアルゴリズムが実用化されれば脅威になります。
約数の個数はどう数える?
素因数分解 n = p₁^a₁ × p₂^a₂ × … × pₖ^aₖ から、τ(n) = (a₁+1)(a₂+1)…(aₖ+1)で瞬時に求まります。例: 360 = 2³×3²×5 → 約数の個数 = 4×3×2 = 24個。全約数を列挙する必要はなく、公式一発で計算可能です。
2以外の偶数の素数は存在する?
存在しません。2以外の偶数は必ず2で割り切れるため、素数の定義(1と自身以外に約数を持たない)を満たしません。したがって2は唯一の偶数の素数であり、それ以外のすべての素数は奇数です。
双子素数とは何?無限にある?
差が2の素数のペア(例: 3と5、11と13、17と19)。「双子素数予想」は、双子素数が無限に存在するという未解決問題。2013年にYitang Zhangが「差が7,000万以下の素数ペアが無限にある」ことを証明し、その後Polymath Projectで差700まで縮小。完全な解決はまだです。
メルセンヌ素数はなぜ特別に注目される?
形が 2^p − 1 と単純で、リュカ・レーマー判定法という特別な高速素数判定法が使えるため、大きな素数を効率的に探索できます。また偶数完全数と1対1対応する数学的美しさもあります。GIMPSプロジェクトの世界的な分散計算で新記録が更新され続けています。
ゴールドバッハ予想とは?
1742年にゴールドバッハがオイラーに宛てた手紙で提起した、「4以上のすべての偶数は2つの素数の和で表せる」という予想。例: 4=2+2, 6=3+3, 8=3+5。コンピュータ検証では4×10¹⁸まで確認されていますが、数学的な証明は未達成。ミレニアム問題ではありませんが、有名な未解決問題の一つです。
Riemann仮説とは何?なぜ懸賞金がかかる?
リーマンゼータ関数ζ(s)の非自明零点がすべて実部1/2の直線上にあるという1859年提起の予想。素数の分布と密接に関わり、証明できれば整数論全体に劇的な影響があります。米国のClay Mathematics Instituteが2000年にミレニアム懸賞問題として100万ドルの賞金を設定。数学の未解決問題の中で最も重要とされます。