素数と合成数

「数論とPython」シリーズ 2019/01/13

整数の性質をみていく上でその乗算(掛け算)に関する性質は重要です。 2つの整数を掛け合わせると新しい整数が得られます。 逆に与えられた整数を「分解」して小さい整数の積で表すことも可能です。 このように分解して得られるそれ以上小さく分解できない整数のことを素数といいます。 今回は素数に関するもっとも基本的な事柄を学んでいきましょう。

割り切る

\(a\neq 0\)\(b\)を整数としたときに, \(a\)\(b\)割り切るとは,とある整数\(c\)が存在して\(b=ac\)となることです。 このことを記号を用いて\(a\mid b\)と書きます。 もし\(a\)\(b\)を割り切らないときは\(a \nmid b\)と書きます。

「割り切る」の例

例えば, \(2\mid 4\)\(3\mid 12\), また\(13\mid (-13)\) などと書きます。 \(2\)\(5\)を割り切らないので \(2\nmid 5\) と書きます。 実際に, \(5/2= 2.5\) もしくは\(5=2\cdot 2.5\)と「割り切る」の定義より割り切らないことがわかります。 (2.5が整数ではないからですね。)

約数

また\(a\neq 0\)\(b\)を整数としましょう。 もし\(a\mid b\)なら\(a\)\(b\)約数であるといいます。

約数の例

\(6\)の約数は\(1, 2, 3, 6\)\(-1, -2, -3, -6\)です。 マイナスの記号は本質的ではないので約数と言ったときは正の約数に限る場合もあります。

素数登場

\(n\)を1より大きい自然数とします。 もし\(n\)の約数が\(1\)\(n\)自身しかない場合に\(n\)のことを素数と呼びます。 つまり, 素数は\(1\)と自分自身でしか割り切ることができない自然数のことです。 素数でない自然数は合成数といいます。 だたし, 1は素数でも合成数でもないと約束しておきます。

最初の10個の素数

2, 3, 5, 7, 11, 13, 17, 19, 23, 29が小さい順で最初の10個の素数たちです。 これらの間にある自然数はすべて合成数です。

算術の基本定理

素数は数論においてのメインテーマです。 素数を理解することがすべての数を理解することへ繋がるのです。

その理由の一つが次の算術の基本定理とよばれる重要な定理です。

算術の基本定理

すべての自然数は素数の積で書き表すことができる。 またその素数の積は掛け算の順番を除いて一意的に決まる。

すでにこの定理は習ったことがあるかもしれませんが, 当面はこの定理をきっちり証明することを目標にします。

与えられた自然数を素数の積で表すことを素因数分解と言います。 例えば,\(12\)を素因数分解すると\(12=2 \cdot 2 \cdot 3\)になります。 ここで点\(\cdot\)は掛け算を表します。 また, 指数を用いて書き直すと\(12=2^2\cdot 3\)とかけます。

算術基本定理の最初の主張は, どんな自然数\(n\)が与えられてもそれを素数の積 \[\begin{align*}
n = p_1^{\alpha_1}p_2^{\alpha_2} \cdots p_k^{\alpha_k} = \prod_{i=1}^{k} p_i^{\alpha_i}
\end{align*}\]
で書けます。 ここで\(p_1, p_2, \cdots, p_k\)は相異なる素数であり, \(\alpha_i\)は素数\(p_i\)\(n\)の中に現れる回数を示す自然数です。

二番目の主張は, この素因数分解に現れる素数\(p_i\)とその回数\(\alpha_i\)\(n\)によって一意的に決っている, つまり誰が素因数分解しても同じ素数が同じだけ必要だということです。

少し高度な脱線

上で見た算術の基本定理(どんな自然数も素数の積にかけて, それが並び替えを無視したら一通りにしか書けないという主張)は, 一見とても自明に思えたかもしれません。 でも証明は実はそこまで簡単ではありません。 さらに, 数学では自然数と似た数体系も研究対象です。 それらの数体系にも素数に類似する概念がありますが, 必ずしも素因数分解が一意的にできるとは限らないのです。

以下の議論は現時点でわからなかったら読み飛ばしてもらって結構です。

次のような数体系を考えましょう。 \[ \Z[\sqrt{-5}] =\{a+b\sqrt{-5} \mid a, b\in \Z\}\] \(\Z[\sqrt{-5}]\)\(a+b\sqrt{-5}\)の形(\(a, b\)は整数)をした数全体の集合です。 この数体系は整数環と呼ばれてるものの一例です。 この数体系の中で\(6=6+0\sqrt{-5}\)の素因数分解を考えると

\[ 6 = 2\cdot 3 = (1+\sqrt{-5})(1-\sqrt{-5})\] と二通りに分解されることがわかります。 つまり, この整数環では分解の仕方が一通りではなかったわけです。

脱線から戻ってきてください

さて, どんな自然数も素数の積で書けるということは, 素数さえすべて集めてしまえばすべての自然数はそれらを掛け合わせて得ることができるということです。 つまり, 素数は自然数のもと, いわば数の原子のようなものですね。

また脱線。 解けば100万ドルのリーマン予想

2000年にクレイ研究所が7つの数学の未解決問題に対してそれぞれの正しい証明に100万ドルの懸賞金を懸けました。 これはミレニアム問題と呼ばれています。 その7問の未解決問題(その内の一つのポアンカレ予想は解決されています)のうちの一つにリーマン予想と呼ばれる問題があります。 その問題は素数の分布と深く関連しています。 素数のことを深く知ることができればあなたも100万ドルを手に入れられるかもしれませんね。

最大公約数

ここから算術基本定理を証明するための準備に取り掛かります。 まずは最大公約数の定義から始めましょう。

与えられた整数\(a\)\(b\)最大公約数(英訳: greatest common divisor)とは\(a\)\(b\)を同時に割り切る最大の整数のことです。 記号で\(\gcd(a,b)\)と表します。 ただし,\(\gcd(0,0)\)だけは\(0\)と定義しておきます。

同時に割り切る整数(最大とは限らない)は単に公約数と言います。

最大公約数の例

例えば, \(4\)\(6\)の最大公約数は\(2\)です。 これを\(\gcd(4,6)=2\)と書きます。 ほかにも挙げると\(\gcd(1,10)=1\)\(\gcd(-12, 6)=6\)となります。 定義を使って確かめてくださいね。

最大公約数の性質 その1

最大公約数の定義から整数\(a, b\)に対して\(\gcd(a,b)= \gcd(b, a)\)であることはわかります。 その他にも定義からすぐに\(\pm\)の符号は最大公約数には関係ないことがわかります。 すなわち\(\gcd(a,b)=\gcd(\pm a, \pm b)\)となります。 ここで符号はどんな組み合わせでもOKです。

もう一つ加えると最大公約数は常に非負であることが定義からわかります。(非負とはゼロか正の整数ということです。)

他にも次のような性質が成り立ちます。

最大公約数の性質

任意の整数\(a, b\)に対して次の等式が成り立つ。 \[\gcd(a,b) = \gcd(a, b-a) = \gcd(a, b+a)\]

証明

記号を整理して見通しを良くするために$X=\gcd(a,b)$, $Y = \gcd(a, b-a)$, $Z = \gcd(a, b+a)$と置きましょう。

まず最初に\(a=0\), \(b=0\)のときは\(X, Y, Z\)のどれもが\(\gcd(0, 0)\)となるので示したい等式は成り立ちます。 そこで\(a\)または\(b\)の少なくともどちらか一方がゼロでない整数の場合を考えましょう。

それでは1つ目の等号(X=Y)を証明してみましょう。 \(X\)\(a\)\(b\)の(最大)公約数なので, \(a=Xc\), \(b=Xd\)となる整数\(c, d\)が存在します。 すると, \[b-a=Xd-Xc=X(d-c)\] と変形できることから\(X\)\(b-a\)も割り切ることがわかります。 つまり\(X\)\(a\)\(b-a\)の公約数であることがわかります。 もちろん公約数は最大公約数以下なので\(X\leq Y\)となることがわかりました。

今度は\(Y\)に注目します。 \(Y\)\(a\)\(b-a\)の(最大)公約数であるから\(a=Ye\), \(b-a=Yf\)となる整数\(e, f\)が存在します。 これらの等式を使うと \[b=Yf+a=Yf+Ye=Y(f+e)\] と書けることから\(Y\)\(b\)も割り切ることがわかります。 つまり\(Y\)\(a\)\(b\)の公約数ということです。 公約数は最大公約数以下であるから\(Y\leq X\)を得ます。

さて以上の議論で2つの不等号\(X\leq Y\)\(Y\leq X\)を得ました。 これより\(X=Y\)が導かれます。 \(X\)\(Y\)を元に戻すと証明したかった等号\(\gcd(a,b) = \gcd(a, b-a)\)が得られます。

以上で1つ目の等号の証明を終わりにしたいと思います。 2つ目の等号も同様の議論で証明できるので, 演習問題として残しておきますので, ぜひご自分の手を動かして証明を書いてみてください。

補足: 上の証明で最大公約数にカッコをつけている箇所がありましたね。 どういう意味かというと, もちろん\(X\)は最大公約数なのですが, そこでは最大であるという性質ではなく, 「公約数である」という事実から次の結論が導かれているのでカッコをつけました。 カッコをつけなくても間違ってはいないし, そもそも「(最大)」を省いてしまっても大丈夫です。

最大公約数の性質 その2

上で得た結果を使って次の性質を証明してみましょう。

最大公約数の性質 その2

$a, b, n$を整数とします。 すると$\gcd(a, b)=\gcd(a, b-an)$が成り立ちます。

証明

もし\(n\)がゼロの場合は証明したい式が成り立つことは自明なので\(n \neq 0\)と仮定して話を進めましょう。 次に\(n\)の正負によって場合分けをしておきましょう。 まずは\(n\)が正の整数の場合を考えていきます。

上で\(\gcd(a,b) = \gcd(a, b-a)\)はすでに証明済みです。 この等号の左辺の\(b\)\(b-a\)にして適用すると\(\gcd(a,b-a) = \gcd(a, b-2a)\)が得られます。 同様に, 始めの式の\(b\)\(b-2a\)にして適用して\(\gcd(a,b-2a) = \gcd(a, b-3a)\)が得られる。 この議論を繰り返すと \[\gcd(a,b-a) = \gcd(a, b-2a)=\gcd(a, b-3a)=\cdots = \gcd(a, b-na)\] となり, いずれ\(b-na\)に到達し等号の最初と最後を比べると証明したかった等式\(\gcd(a, b)=\gcd(a, b-an)\)が得られます。

最後に\(n\)が負の整数の場合を考えます。 \(n=-n’\), \(n’\)は正の整数, と置きます。

最大公約数の性質その1で\(\gcd(a,b) = \gcd(a, b+a)\)を証明しました。 これを利用しましょう。 この式の\(b\)\(b+a\), \(b+2a, \cdots, b+n’a\)として適用すると \[\gcd(a, b) = \gcd(a, b+a)=\gcd(a, b+2a)=\cdots = \gcd(a, b+n’a)\] \(n’=-n\)なので\(\gcd(a, b)=\gcd(a, b-na)\)となり証明したかった等号が得られたことになります。

以上で証明を終了したいと思います。

ユークリッドの互除法

次のトピックはユークリッドの互除法という与えられた2つの整数の最大公約数を効率よく発見するための手法です。 そのための準備として整数の除法(割り算)についての基礎を復習しておきましょう。

整数の除法

\(14\)\(3\)で割ると\(14=3\cdot4+2\)となり商が$4$で余りが$2$となりますね。 このように余りが常に割った数(この場合は\(3\))より小さいくすることができ, その場合の商と余りは一意的に(一通りに)決まるというのが次の定理です。 もし割った数が負の整数の場合は余りはその絶対値より小さい数になります。

整数の除法の原理

$a$を整数, $b$をゼロでない整数とする。 このとき, 整数$q$と$r$で$a=bq+r$, $r< |b|$を満たすものが一意的に存在する。

証明

第一段階として要求をみたすような整数\(q,r\)が存在することを示します。

議論を簡単にするためにまず\(a, b\)が正の整数と仮定してみましょう。

次のような集合\(S\)を考えます。 \[ S= \{ n \in \Z \mid a-bn \geq 0 \}.\] この集合は\(a-bn\)がゼロ以上になるような整数\(n\)からなる集合です。 例えば, \(n=0\)とすると\(a-bn=a>0\)となる。 (今\(a>0\)と仮定していることを思い出しましょう。) なので, \(0\in S\)となる。 (\(0\)は集合\(S\)の要素ということを表す記号でしたね。)

集合\(S\)に入っているどんな整数\(n\)を取ってきても\(a-bn \geq 0\)を満たしていることから\(n \leq a/b\)であることがわかる。 つまり\(S\)に入っている整数はどんなに大きくても高々\(a/b\)までということがわかる。 これらから言えることは集合\(S\)は空集合でなく, 上界を持つということです。 そこで\(q\)\(S\)に属する整数の中で最大のものとしましょう。 そして\(r=a-bq\)と置きます。 \(q\)の定め方から\(r\geq 0\)がわかります。 変形すると$a=bq+r$となっているので, 後は\(r < b\)がわかれば第一段階の目標達成です。

これを証明するために, \(r \geq b\)と仮定してみましょう。 つまり\(r -b \geq 0\)を仮定します。 すると \[0 \leq r- b = a – bq – b = a-b(q+1) \] が成り立ちます。 これより\(q+1 \in S\)となることがわかります。 しかし, \(q\)\(S\)に属する元の中で最大のものでしたからそれよりも大きい\(q+1\)\(S\)に属するのは矛盾となるわけです。 この矛盾は\(r \geq b\)と仮定したことから生じたものなのでこの仮定が間違っていた, つまり\(r < b\)であることが証明されました。

まとめると\(a=bq+r\)\(0\leq r < b\)となる\(q\)\(r\)が見つかったことになります。 これで第一段階終了です。

第二段階では, 一意性を証明して定理の証明を完成させたいと思います。 一意性を証明するためには第一段階で発見した\(q, r\)以外には条件をみたす整数は存在しないことを証明できればOKです。

そこで\(q’, r’\)\(a=bq’+r’\), \(0 \leq r’ <b\)を満たす整数としてみましょう。 目標はこれらが上で得た\(q, r\)と一致することです。

始めに\(r’=a-bq’ \leq 0\)と書くと\(q’ \in S\)であることがわかります。 \(q\)\(S\)の最大元であったことから\(q’ \leq q\)がわかります。 ここでもし\(q=q’\)であれば \[ r’ = a-bq’ = a-bq =r\] となり\(r’=r\)も得られるので, \(q'<q\)と仮定してみましょう。 \(q\)\(q’\)も整数なのでその差は\(1\)以上です。 なので\(m=q-q’\)とすれば\(m \geq 1\)となります。 \(r’\)の大きさを評価してみましょう。

\[ r’ = a-bq’ =a-b(q-m) =a-bq+bm = r +bm \geq b,\] ここで最後の不等式には\(r \geq 0\)\(m \geq 1\)を用いました。 ここで得られた結果\(r’ \geq b\)\(r’\)の取り方に矛盾しています。 ということで\(q'<q\)と仮定したことが誤り, つまり\(q’=q\)でなければならないことがわかりました。

以上で\(q’=q, r’=r\)であることを証明できたので, 条件をみたすものは一組しかないことが証明できました。

これまでの証明は\(a, b\)が正の整数と仮定しましたが, どちらかまたは両方が負の整数でも似たような議論ができます。 実際は\(a\)の値に証明はさほど左右されず, \(b\)が負の場合は集合\(S\)の最大元を考える代わりに最小元を考えることによって証明を書き換えることができます。 なので後は演習問題としますのでぜひ試みてください。

これで証明を終わりにしたいと思います。

ユークリッドの互除法のアルゴリズム

ユークリッドの互除法のアルゴリズム

整数$a$と$b$の最大公約数を$g=\gcd(a,b)$とすると
$$ g= ma+nb$$
を満たす整数$m, n$が存在する。

\(ma+nb\)のような形のことを \(a\)\(b\)の線形結合と呼びます。 この定理は\(a\)\(b\)最大公約数は\(a\)\(b\)の線形結合で書けると主張しています。

この定理の証明はただ単に整数\(m, n\)が存在するということを証明するだけでなく, 実際にそれをどのように計算するかの手法(アルゴリズム)を与えています。 このアルゴリズムのことをユークリッドの互除法と言います。

ユークリッドの互除法の証明

まず初めに\(b=0\)の場合を考えてしまいましょう。 この場合は\(\gcd(a,0)=a\)ですから\(m=0,n=0\)とすれば式\(g= ma+nb\)を満たすことがわかります。 そこで\(b\neq 0\)の場合を考えていきましょう。

証明のキーは最大公約数その2で証明した性質です。 その定理の\(a, b\)を入れ替えて適用すると \[ \gcd(a, b) = \gcd(b, a-bn), \] \(n\)は任意の整数となります。

整数の除法の定理より \[a=bq_1+r_1, 0\leq r_1 <|b|\] を満たす整数\(q_1, r_1\)が一意的に存在します。 上の性質を使うと \[\gcd(a, b)= \gcd(b, a-bq_1)= \gcd(b, r_1)\] となります。 つまり, \(a,b\)の最大公約数は割る数\(b\)と余り\(r_1\)の最大公約数に等しいことがわかります。

さて, もしここで\(r_1=0\)なら\(\gcd(a, b)=\gcd(b, r_1)=b\)となるので\(m=0, n=1\)と取ればよいですね。

\(r_1\neq 0\)ならば今度は \[b=r_1q_2+r_2, 0\leq r_2 <|r_1|\] を満たす整数\(q_2, r_2\)が存在します。 最大公約数の性質その2をもう一度使うと \[ \gcd(a, b)=\gcd(b, r_1) = \gcd(r_1, b-r_1q_2)=\gcd(r_1, r_2)\]

もし\(r_2=0\)なら, ここで一旦ストップし, もしも\(r_2\neq 0\)ならばもう一度整数の除法を適用して \[r_1=r_2q_3+r_3, 0\leq r_3 <|r_2|\] となる整数\(q_3, r_3\)が存在します。 このように余りがゼロでない限り割る数を余りで割るということを繰り返します。 もし余りがゼロにならなかったらこの作業を永遠に繰り返さなければいけないませんが, 幸いなことに余り\(r_i\)は一回ごとに絶対値が確実に小さくなっていってます。 これは\(0\leq r_i <|r_{i-1}|\)のおかげです。 つまりこの作業は有限回繰り返すことでいつかは余りをゼロにすることができるということです。

そこで, 余りがゼロになるところを書いてみると \[\begin{align*}
r_{k-2} &= r_{k-1}q_k+r_k && 0\leq r_k <|r_{k-1}|\\
r_{k-1} &= r_{k}q_{k+1}+0
\end{align*}\]

最大公約数の性質その2の繰り返し適用すると \[\gcd(a, b)=\gcd(b, r_1)=\gcd(r_1, r_2)=\cdots = \gcd(r_{k-1}, r_k) = \gcd(r_k, 0)= r_k\] となることがわかります。 さて, \(\gcd(a, b)=r_k\)がわかりましたから次は \(r_k=ma+nb\)となる\(m\)\(n\)を見つけましょう。

最初の除法の式より\(r_1=a+(-q_1)b\)と書けます。 これは\(a\)\(b\)の線形結合ですね。 これを2つめの除法の式の\(r_1\)に代入すると \[\begin{align*}
r_2 &= b-q_2r_1\\
&=b-q_2(a+(-q_1)b)\\
&=(-q_2)a+(q_1q_2+1)b
\end{align*}\]
が得られます。 これもまた\(a\)\(b\)の線形結合です。

これを順次繰り返していくと次の\(r_i\)\(a\)\(b\)の線形結合で書けるから最後の\(r_k\)\(a\)\(b\)の線形結合で書けることがわかります。 \(r_k=\gcd(a,b)\)であったからこれで証明が終了となります。

算術の基本定理の証明の一歩手前

さて, 算術基本定理の証明の準備がだいぶ整ってきました。 つぎの定理は基本定理を証明する上での要です。

補題

$p$を素数, $a, b$を整数とします。 もし$p$が積$ab$を割り切るのであれば$p$は$a$または$b$を割り切る。

記号で書けば$p\mid ab \implies p\mid a$ または$p\mid b$となる。

もし\(p\mid a\)なら定理は成り立っているので\(p\nmid a\)と仮定しましょう。 このとき\(\gcd(p, a)=1\)となります。 なぜなら素数\(p\)の正の約数は\(1, p\)のみで\(p\nmid a\)だからです。

するとユークリッドの互除法より \[1=mp+na\] となる整数\(m, n\)が存在します。 両辺に\(b\)をかけると \[b=mpb+nab\] となります。 ここで右辺に注目しましょう。 右辺の第一項目は\(p\)を含むのでもちろん\(p\)で割り切れます。 右辺の二項目は\(ab\)を含むため定理の仮定より\(p\)で割り切れます。 右辺のどちらの項も\(p\)で割り切れることから右辺自体が\(p\)で割り切れることがわかります。 このことから等号で繋がれた左辺\(b\)\(p\)で割り切れることがわかります。

まとめると, もし\(p\nmid a\)なら\(p\mid b\)であることが証明できました。 つまり積の片方を素数が割り切らなければもう一方を必ず割り切らなければいけないということです。 これで証明を終わりにしたいと思います。

算術の基本定理の証明

それでは準備が整ったので算術基本定理の証明にとりかかりましょう。 証明することは与えられた自然数が一意的に素数の積に分解されることでした。 証明は二部に分けられます。 初めに, 与えられた自然数が素数の積で書き表すことができることを証明します。 そして二番目に, その素数の積での表現が積の順番を除いては一意的にかけることを証明します。 前半は存在性の証明, 後半は唯一性の証明です。

算術の基本定理 -存在性の証明-

\(n\)を与えられた自然数とします。 この自然数が素数の積にかけることを(完全)帰納法を用いて証明します。 まず\(n=1\)の場合には\(n\)は素数ゼロ個の積で書けます。 (数学ではゼロ個の積は\(1\)となっています。)

次に\(n\)\(k\)以下のときには素数の積で表されると仮定しましょう(帰納法の仮定)。 ここで\(k\)は任意の自然数です。 この仮定の下に\(n=k+1\)のときにも\(n\)が素数の積でかけることを示します。

もし\(n\)自身が素数であれば, それは素数一つの積で書けていることになります。 なので\(n\)が合成数だとしましょう。 すると\(n=ab\), \(1<a, b<n=k+1\)となる約数\(a, b\)が存在します。 どちらの約数も\(k\)以下なので帰納法の仮定より\(a, b\)はそれぞれ素数の積で書けます。 そしてその積である\(n=ab\)も素数の積で書けることになります。

数学的帰納法によりすべての自然数\(n\)について\(n\)が素数の積に分解されることが証明されました。

算術の基本定理 -唯一性の証明-

証明の後半では, 与えられた自然数\(n\)を素数の積で書く方法が積の順序を除いて一意的に決まることを数学的帰納法を用いて証明します。

\(n=1\)の場合にはゼロ個の素数を使って表現するしか方法がありません。

帰納法の仮定として\(k\)を任意の自然数とし, \(n\)\(k\)以下の場合には\(n\)を素数の積に書く方法は順序を除いて一意的だということを仮定しましょう。

それでは\(n=k+1\)の場合を考えましょう。 仮に\(n\)\[ n=p_1p_2\cdots p_s= q_1q_2\cdots q_t\] と二通りの素数の積で書けたとします。 ここで\(p_i\), \(i=1,\dots, s\)\(q_j\), \(j=1, \dots, t\)は必ずしも相異なるとは限らない素数です。

この等式より\(p_1 \mid n\)がわかります。 つまり\(p_1\mid q_1q_2\cdots q_t\)となります。 カッコを使ってグループ分けしてみましょう: \[ p_1\mid q_1(q_2\cdots q_t).\]

“一歩手前”で証明した定理により素数\(p_1\)\(q_1\)\(q_2 \cdots q_t\)のどちらかを割り切ります。 もし\(q_1\)を割り切るのであれば\(q_1\)も素数であることより\(p_1=q_1\)となります。 もし \(p_1 \mid q_2 \cdots q_t\)であれば“一歩手前”の定理をもう一度使うと \(p_1 \mid q_2\)または \(p_1\mid q_3\cdots q_t\)となります。 前者の場合は\(p_1=q_2\), 後者の場合にはもう一度同じことを繰り返します。 すると, いずれは\(p_1=q_j\)となる\(q_j\)が見つかります。 証明に素数の積の順番は関係ないのでこの\(q_j\)\(q_1\)としても差し支えありません。

次に\(p_1\)\(n\)を割ったものを考えると \[ \frac{n}{p_1}=p_2\cdots p_s= q_2\cdots q_t\] と書けています。 ここで\(n/p_1\)\(n\)よりも小さい自然数です。 なので帰納法の仮定により素数の積に一意的にかけているはずです。 つまり\(p_2\cdots p_s= q_2\cdots q_t\)という2つの素数の積は実は順番を除いて同じものだということです。 そして\(p_1=q_1\)だったことを合わせると\(n\)に現れる素数たち\(p_i\)\(q_j\)は順番を除いて一致することがわかりました。

数学的帰納法によりすべての自然数\(n\)について主張が正しいことが証明されました。

これで算術の基本定理の証明を終わりにしたいと思います。

次なる数の疑問

一見当たり前のようにみえる(かもしれない)算術基本定理ですが, その厳密な証明には少なからず非自明な数学的議論が必要でした。

さて, どんな自然数も素数の積に順序を除いては一意的にかけるという定理でしたが, 与えられた自然数を実際にどのように素数に分解すればいいのかはこの証明は教えてくれません。 算術基本定理は素因数分解できるよと教えてくれますが, どうやって分解すればいいのかは教えてくれないのです。 与えられた自然数が比較的小さければ, 知っている限りの素数で割り算を繰り返せば分解できるかもしれません。 ですが, もしとてつもなく大きい数の場合には現代のスーパーコンピューターを持ってしても素因数分解はとても時間のかかる困難な問題なのです。 数学者ですら効率よく素因数分解する手法を持ち合わせていないのです。 この分解するのが難しいという数の性質を逆に利用しているのが現代の暗号論です。 これらの話題にも, のちのち扱っていきます。

少し違う方向の話をしましょう。 すべての自然数は素数の積でかけるということは, 素数は自然数を構築する上での基礎的なブロックのようなものです。 素数さえ手元に揃えてしまえば後は掛け算していけばどのような自然数の得られてしまいます。 では, すべての素数を手持ちのノート書き出すということは可能なのでしょうか? どんな自然数もそのノートに書かれている素数を掛け合わせると作れるような素数ノート, そのようなノートを数学者は持っているのでしょうか? 答えはノーです。 実は素数は無限個あることが知られています。 証明は次回に紹介しますが, どのように素数が無限個あるか考えてみてください。

練習問題で実力をつけましょう。

素数と合成数
練習問題へ

前のトピック

数論のための基本的な定義

数論のための基本的な定義

数論を学んでいくための基礎的な定義を学んでいきます。 整数, 有理数, 実数などの数の種類と集合論的な記号を導入します。 続きを読む

次のトピック

素数が無限個あることについての考察

素数が無限個あることについての考察

素数が無限個あることを証明します。 証明の前に素数の個数に関するデータを見て, $n$以下の素数の個数がどのように増えていくかをグラフ化します。 また, 特殊な形をした素数の個数の無限性についても議論します。 続きを読む