MathLabs

6年生

素数

あらゆる整数を作る、それ以上分解できない基本要素——数学最古の謎の出発点。

直観数を作る基本部品

1より大きいすべての整数は素数であるか、あるいはそれより小さい素数どうしの積として作られている——ちょうどすべての分子が原子からできているように。原子を知れば、あらゆる分子がどう組み立てられているかが分かる。

定義: 素数と合成数

素数とは、1より大きい整数で、正の約数がちょうど1と自分自身の2つだけであるものを指す。1より大きく素数でない整数は合成数と呼ばれ、1と自分自身以外にも約数を持つ。1は素数でも合成数でもない。正の約数がただ1つしかないからである。

最初の素数は 2,3,5,7,11,13,17,19,23,…2, 3, 5, 7, 11, 13, 17, 19, 23, \ldots である。22 が唯一の偶数の素数であることに注意しよう——他の偶数はすべて2で割り切れるので、1と自分自身以外にもう1つ約数を持つことになる。

中高素早い整除判定法

小さな数による整除判定法
除数判定法例
2一の位が偶数(0, 2, 4, 6, 8)128128 は末位が 88
3各桁の和が3で割り切れる123123: 1+2+3=61+2+3=6
5一の位が0か5275275 は末位が 55
9各桁の和が9で割り切れる738738: 7+3+8=187+3+8=18

中高エラトステネスのふるい

ある数 NN までのすべての素数を見つけるには、2,3,4,…,N2, 3, 4, \ldots, N を書き出す。22 の倍数を 22 自身を除いて消し、次に 33 の倍数を 33 自身を除いて消す、という具合に続ける。まだ消されていない数に出会ったら、それは素数である——その倍数も消していく。ふるいを通り抜けて残ったものが、まさに NN までの素数のリストである。

例: 30までふるいにかける

ふるいを使って2から30までのすべての素数を挙げよ。

解答

ステップ1(2, 3, 5の倍数を消す): 2から30までの整数を書き出す。まず2より大きい2の倍数(4, 6, 8, …, 30)を消し、次にまだ消えていない3の倍数(9, 15, 21, 27)を消し、最後にまだ消えていない5の倍数(25)を消す。

ステップ2(停止条件と残った素数): 30≈5.5\sqrt{30}\approx5.5 より大きい素数については自身の倍数を消す必要がない。任意の合成数 ≤30\le30 は必ず素因数 ≤5\le5 をもつからである。残った10個の数 2,3,5,7,11,13,17,19,23,292,3,5,7,11,13,17,19,23,29 が30以下のすべての素数である。

中高素因数分解

すべての合成数は素数の積に分解できる。割り切れる最小の素数で次々に割っていき、素数だけが残るまで続ければよい。

60=2×30=2×2×15=2×2×3×5=22⋅3⋅560 = 2 \times 30 = 2 \times 2 \times 15 = 2 \times 2 \times 3 \times 5 = 2^2 \cdot 3 \cdot 5
n=p1a1p2a2⋯pkak,d(n)=(a1+1)(a2+1)⋯(ak+1)n = p_1^{a_1} p_2^{a_2} \cdots p_k^{a_k}, \qquad d(n) = (a_1 + 1)(a_2 + 1)\cdots(a_k + 1)
素因数分解の木と約数の関係を表すインタラクティブなグラフネットワーク。
1..601..60 のグリッド上の素数(緑)と合成数(赤):≤60\le 60 のすべての合成数は ≤60<8\le \sqrt{60} < 8 の素因数を持つ。

1より大きいすべての整数は、因数の順序を除けばただ一通りの方法で素数の積として書ける——例えば 60=22⋅3⋅560 = 2^2\cdot3\cdot5 であり、これ以外の分解の仕方はない。

なぜ正しいのか?

だからこそ素数は算術の「原子」と呼ばれる。それぞれの数を作るレシピはただ一通りしかなく、素数とその指数を知れば、その数の約数についてすべてが分かる。

証明

存在性(最小反例法): 素数の積として書けない整数 n>1n > 1 が存在すると仮定し、そのような最小の整数を m>1m > 1 とおく。素数はそれ自身1個の素数の積なので mm は合成数であり、1<a,b<m1 < a, b < m を満たす整数によって m=abm = a b と書ける。mm の最小性より aa と bb はともに素数の積であるため、その積 m=abm = a b も素数の積となり矛盾する。

ユークリッドの補題: 素数 pp が p∣abp \mid a b かつ p∤ap \nmid a を満たすとする。pp は素数で p∤ap \nmid a だから gcd⁡(p,a)=1\gcd(p, a) = 1 である。ベズーの等式より px+ay=1p x + a y = 1 を満たす整数 x,yx, y が存在する。両辺に bb を掛けると p(bx)+(ab)y=bp(b x) + (a b)y = b となり、pp は p(bx)p(b x) と aba b の両方を割り切るので pp は右辺も割り切り、p∣bp \mid b が従う。

一意性: 背理法により2通りの異なる素因数分解をもつ整数が存在するとし、そのような最小の整数を n=p1p2⋯pr=q1q2⋯qsn = p_1 p_2 \cdots p_r = q_1 q_2 \cdots q_s(ただし p1≤⋯≤prp_1 \le \cdots \le p_r かつ q1≤⋯≤qsq_1 \le \cdots \le q_s)とおく。p1∣q1q2⋯qsp_1 \mid q_1 q_2 \cdots q_s よりユークリッドの補題を繰り返し適用すると、p1p_1 はある素数 qjq_j を割り切り、p1=qj≥q1p_1 = q_j \ge q_1 となる。対称性から q1≥p1q_1 \ge p_1 も成り立つので p1=q1p_1 = q_1 である。両辺を p1p_1 で割ると、より小さい整数 n/p1<nn / p_1 < n が2通りの異なる素因数分解をもつことになり、nn の最小性に矛盾する。

中高素数は無限に存在するか?

最大の素数は存在しない——素数のリストは決して終わらない。

なぜ正しいのか?

ユークリッドの論法(紀元前300年頃):素数が有限個 p1,p2,…,pkp_1, p_2, \ldots, p_k しかないと仮定する。それらすべてを掛け合わせて1を足す:N=p1p2⋯pk+1N = p_1 p_2 \cdots p_k + 1。NN をどの pip_i で割っても余りは1になるので、どの pip_i も NN を割り切らない。しかし NN は(算術の基本定理により)何らかの素因数を持たねばならず、それはリストにない素数である。よって、そのリストは最初から完全ではなかった。

証明

ステップ1(ユークリッド数の構成): {p1,p2,…,pk}\{p_1, p_2, \dots, p_k\} を任意の有限個の素数の集合とする。リスト内のすべての素数の積に 11 を足した整数 N=p1p2⋯pk+1N = p_1 p_2 \cdots p_k + 1 を作る。p1≥2p_1 \ge 2 より N≥2+1=3>1N \ge 2 + 1 = 3 > 1 である。

ステップ2(素因数の存在): 算術の基本定理により、すべての整数 N>1N > 1 は少なくとも1つの素因数 qq をもち、q∣Nq \mid N となる(NN 自身が素数なら q=Nq = N、NN が合成数なら q<Nq < N)。

**ステップ3(qq が新しい素数であることの証明):** 背理法により、ある番号 ii について q=piq = p_i と仮定する。すると q∣p1p2⋯pkq \mid p_1 p_2 \cdots p_k であり、かつ q∣Nq \mid N なので、素数 qq はその差 q∣(N−p1p2⋯pk)=1q \mid (N - p_1 p_2 \cdots p_k) = 1 を割り切らなければならない。しかしすべての素数は q≥2q \ge 2 を満たすためこれは不可能である。ゆえに q∉{p1,p2,…,pk}q \notin \{p_1, p_2, \dots, p_k\} であり、いかなる有限リストもすべての素数を含み得ないことが証明された。

数が大きくなるにつれて素数はまばらになっていく——しかしユークリッドの論法は、それが決して尽きないことを保証している。素数がどれほどまばらになり、どれほど均等に散らばっているかは、素数定理の主題であり、さらにその先には、今日の数学における最も深い未解決問題の一つが待っている。

大学実世界での応用:公開鍵暗号(RSA暗号)

現代のインターネット通信の安全性(HTTPS、電子署名、オンラインバンキング)は、整数論における著しい非対称性に基づいている。2つの巨大な素数 pp と qq を掛けて N=pqN = p q を計算するのは数ミリ秒で済む一方、各素数が 300+300+ 桁のときに合成数 N=pqN = p q を pp と qq に素因数分解することは計算量的に不可能である。RSA暗号(Rivest–Shamir–Adleman, 1977年)では、法 N=pqN = p q と暗号化指数 ee を公開し、復号鍵 dd は秘密の素因数からオイラーのトーシェント関数 φ(N)=(p−1)(q−1)\varphi(N) = (p-1)(q-1) を求めて ed≡1(modφ(N))e d \equiv 1 \pmod{\varphi(N)} により算出する。誰でも平文 MM を C≡Me(modN)C \equiv M^e \pmod{N} として暗号化できるが、M≡Cd(modN)M \equiv C^d \pmod{N} により復号できるのは秘密鍵 dd の保持者だけである。

例: 素数 p = 5, q = 11 を用いたミニRSA鍵生成と暗号化

素数 p=5p = 5 と q=11q = 11、公開指数 e=3e = 3 を用いて、RSAの法 NN、オイラー関数 φ(N)\varphi(N)、秘密復号鍵 dd、および平文 M=7M = 7 に対する暗号文 CC を求めよ。

解答

ステップ1(法とトーシェント関数の計算): 2つの秘密の素数を掛けて公開の法 N=pq=5×11=55N = p q = 5 \times 11 = 55 を得て、オイラー関数 φ(55)=(5−1)(11−1)=4×10=40\varphi(55) = (5-1)(11-1) = 4 \times 10 = 40 を計算する。

ステップ2(秘密鍵と暗号化): 合同式 3d≡1(mod40)3 d \equiv 1 \pmod{40} を満たす dd を求めるため 4040 の倍数に 11 を足した数を調べると、3×27=81=2×40+1≡1(mod40)3 \times 27 = 81 = 2 \times 40 + 1 \equiv 1 \pmod{40} より d=27d = 27 が得られる。公開鍵 (N,e)=(55,3)(N, e) = (55, 3) を用いて平文 M=7M = 7 を暗号化すると、暗号文 C≡73=343=6×55+13≡13(mod55)C \equiv 7^3 = 343 = 6 \times 55 + 13 \equiv 13 \pmod{55} となる。

次のうち素数はどれか?

なぜ2だけが唯一の偶数の素数なのか?

84を素因数分解すると?

ユークリッドの証明で、p1,…,pkp_1,\ldots,p_k がすべての素数だと仮定する。N=p1p2⋯pk+1N=p_1p_2\cdots p_k+1 とおく。NN について何が分かるか?

参考文献

  1. David M. Burton (2010). Elementary Number Theory
  2. John H. Conway, Richard K. Guy (1996). The Book of Numbers · DOI:10.1007/978-1-4612-4072-3