コンテンツにスキップ

合同式とフェルマーの小定理:余りだけの世界で計算する

対象読者: 本テーマ第 1 章の素数とベズーの等式を学び、同値関係と商集合の考え方を知っている人。環・体・群の定義は本文で確認するので、事前の学習は仮定しません。

前提となる記事:素数の魅力と素数定理:無限性・一意分解から分布の法則へ

生 Markdown

時計は 12 時の次が 13 時ではなく 1 時に戻ります。この記事は、このように「割った余りだけを見る」世界で足し算・掛け算をするとどうなるか、という話です。余りの世界では割り算がいつでもできるわけではありませんが、できる条件ははっきり決まります。読み終えると、巨大なべき乗の余りを手で求める方法と、素数を使った暗号(RSA)がなぜ正しく動くのかが分かります。

  • 整数を「nn で割った余り」で分類すると、加法・減法・乗法がそのまま持ち込める。これが合同式 a≡b(modn)a \equiv b \pmod n であり、商集合 Z/nZ\mathbb{Z}/n\mathbb{Z} は可換環(足し算・引き算・掛け算ができ、掛け算の順序によらない集合)になる。
  • 割り算は無条件にはできない。[a][a] が Z/nZ\mathbb{Z}/n\mathbb{Z} で逆元をもつのは gcd⁡(a,n)=1\gcd(a,n)=1 のときに限る。この事実の根拠はベズーの等式ただ一つです。
  • nn が素数 pp のとき Z/pZ\mathbb{Z}/p\mathbb{Z} は体になり、00 でない元すべてが可逆になる。ここからフェルマーの小定理 ap−1≡1(modp)a^{p-1} \equiv 1 \pmod p(p∤ap \nmid a のとき)が出る。
  • 一般の nn に対する拡張がオイラーの定理 aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1 \pmod n で、証明の骨格はフェルマーの小定理と同じ「aa 倍写像が単元群の置換である」という一点です。
  • 中国剰余定理は Z/mnZ≅Z/mZ×Z/nZ\mathbb{Z}/mn\mathbb{Z} \cong \mathbb{Z}/m\mathbb{Z} \times \mathbb{Z}/n\mathbb{Z}(gcd⁡(m,n)=1\gcd(m,n)=1)という同型で、φ\varphi の乗法性と RSA 暗号の正当性の両方を支えている。
  • フェルマーの小定理の逆は成り立たない。561561 のようなカーマイケル数が反例になり、これが素数判定を確率的アルゴリズムへと押しやった。

いま 77 時だとして、88 時間後は何時でしょうか。7+8=157+8=15 ですが、時計の文字盤には 1515 がないので 33 時と答えます。私たちは日常的に「1212 で割った余り」の世界で足し算をしているわけです。

012345678910117 + 8= 3 (mod 12)
12 を法とする加法。7 から 8 だけ進むと 3 に戻る。

この「余りだけを見る」計算法は古くから断片的に使われていました。各位の数字の和で 99 の倍数を判定する九去法は中世の商人の検算術ですし、暦の計算も本質的に剰余の計算です。しかしこれを ≡\equiv という記号で体系化し、独立した代数系として扱ったのはガウス『整数論研究』(1801)です。ガウスはこの記号ひとつで、それまで散らばっていた整数論の技法を統一しました。

なぜ記号を導入するだけで進歩が起きるのでしょうか。理由は、合同式が等号とほとんど同じ規則で扱えるからです。「両辺に同じものを足してよい」「両辺に同じものを掛けてよい」が成り立つので、方程式を変形する感覚をそのまま持ち込めます。すると例えば 21002^{100} の下 22 桁のような、まともに計算すれば 3131 桁の数を扱う問題が、100100 未満の数の掛け算数回に化けます。

一方で等号と決定的に違う点もあります。割り算が自由にできません。2×3≡2×9(mod12)2 \times 3 \equiv 2 \times 9 \pmod{12} ですが 3≢9(mod12)3 \not\equiv 9 \pmod{12} です。この「割れる/割れない」の境目を正確に決めることが、この記事の技術的な核心であり、そこからフェルマーの小定理も RSA 暗号も流れ出します。

この記事は 素数の魅力 - 素数定理 の続きにあたります。素数を「どれだけあるか」ではなく「どう振る舞うか」の側から見る回だと思ってください。

2. 準備 — 除法の原理とベズーの等式

Section titled “2. 準備 — 除法の原理とベズーの等式”

以下、Z\mathbb{Z} は整数全体、N={1,2,3,…}\mathbb{N} = \{1,2,3,\ldots\}(00 を含めない)とします。a∣ba \mid b は「aa が bb を割り切る」、すなわち b=acb = ac となる c∈Zc \in \mathbb{Z} が存在することを意味します。

定理 2.1(除法の原理)✓

a∈Za \in \mathbb{Z}、n∈Nn \in \mathbb{N} とする。このとき

a=qn+r,0≤r<na = qn + r, \qquad 0 \le r < n

を満たす整数 q,rq, r がただ一組存在する。

証明(定理 2.1)

存在を示します。集合 S={a−qn∣q∈Z}∩Z≥0S = \{a - qn \mid q \in \mathbb{Z}\} \cap \mathbb{Z}_{\ge 0} を考えます。qq として十分小さい負の整数(例えば q=−∣a∣q = -|a|)を取ると a−qn=a+∣a∣n≥a+∣a∣≥0a - qn = a + |a|n \ge a + |a| \ge 0 なので S≠∅S \ne \varnothing です。SS は非負整数の空でない部分集合なので、整列性(公理 3.1)[証明の技術] により最小元 r=a−qnr = a - qn をもちます。

もし r≥nr \ge n なら r−n=a−(q+1)nr - n = a - (q+1)n もまた非負で SS に属し、r−n<rr - n < r となって rr の最小性に反します。よって 0≤r<n0 \le r < n です。

一意性を示します。a=qn+r=q′n+r′a = qn + r = q'n + r'(0≤r,r′<n0 \le r, r' < n)とすると (q−q′)n=r′−r(q - q')n = r' - r です。右辺は ∣r′−r∣<n|r' - r| < n を満たすので、∣q−q′∣⋅n<n|q - q'| \cdot n < n、したがって ∣q−q′∣<1|q - q'| < 1、すなわち q=q′q = q' です。これを戻すと r=r′r = r' を得ます。

この rr を a mod na \bmod n と書きます。 mod \bmod を「余りを取る演算」として使うときはこの意味です(後で出る (modn)\pmod n は関係を表す注記で、役割が違います)。

a,ba, b が同時に 00 でないとき、aa と bb の公約数のうち最大のものを gcd⁡(a,b)\gcd(a,b) と書きます。gcd⁡(a,b)=1\gcd(a,b)=1 のとき aa と bb は互いに素であるといいます(定義 2.1[素数の魅力と素数定理] と同じ記法です)。

定理 2.2(ベズーの等式)✓

a,ba, b を同時には 00 でない整数とする。このとき

ax+by=gcd⁡(a,b)ax + by = \gcd(a,b)

を満たす整数 x,yx, y が存在する。さらに、{ax+by∣x,y∈Z}\{ax+by \mid x,y \in \mathbb{Z}\} は gcd⁡(a,b)\gcd(a,b) の倍数全体と一致する。

証明(定理 2.2)

I={ax+by∣x,y∈Z}I = \{ax + by \mid x, y \in \mathbb{Z}\} とおき、II に含まれる正の整数全体を I+I^{+} とします。a≠0a \ne 0 なら a⋅a+b⋅0=a2>0a \cdot a + b \cdot 0 = a^2 > 0 が I+I^{+} に属し、a=0a = 0 なら b≠0b \ne 0 より b2∈I+b^2 \in I^{+} です。いずれにせよ I+≠∅I^{+} \ne \varnothing なので、整列性により最小元 d=ax0+by0>0d = ax_0 + by_0 > 0 が取れます。

まず d∣ad \mid a を示します。定理 2.1 により a=qd+ra = qd + r(0≤r<d0 \le r < d)と書くと

r=a−qd=a−q(ax0+by0)=a(1−qx0)+b(−qy0)∈I.r = a - qd = a - q(ax_0 + by_0) = a(1 - qx_0) + b(-qy_0) \in I .

もし r>0r > 0 なら r∈I+r \in I^{+} かつ r<dr < d となり dd の最小性に反します。よって r=0r = 0、すなわち d∣ad \mid a です。同じ議論で d∣bd \mid b も出るので、dd は a,ba, b の公約数です。

逆に cc を a,ba, b の任意の公約数とすると、d=ax0+by0d = ax_0 + by_0 の右辺の各項が cc で割り切れるので c∣dc \mid d、したがって c≤dc \le d です。ゆえに d=gcd⁡(a,b)d = \gcd(a,b) であり、d=ax0+by0d = ax_0 + by_0 が求める表示です。

最後の主張は、II の任意の元 ax+byax+by が d∣ad \mid a, d∣bd \mid b より dd の倍数であること、逆に dd の倍数 kd=a(kx0)+b(ky0)kd = a(kx_0) + b(ky_0) が II に属することから従います。

補題 2.3(ユークリッドの補題)✓

gcd⁡(c,n)=1\gcd(c,n) = 1 かつ n∣cmn \mid cm ならば n∣mn \mid m である。特に pp が素数で p∣abp \mid ab ならば p∣ap \mid a または p∣bp \mid b である。

証明(補題 2.3)

定理 2.2 により cx+ny=1cx + ny = 1 となる整数 x,yx, y が取れます。両辺に mm を掛けると

m=(cm)x+n(my)m = (cm)x + n(my)

です。仮定より n∣cmn \mid cm なので右辺の第 11 項は nn で割り切れ、第 22 項も明らかに nn の倍数です。よって n∣mn \mid m となります。

後半は、p∤ap \nmid a のとき pp が素数であることから gcd⁡(p,a)\gcd(p,a) は 11 か pp のいずれかで、pp ではないので 11 であり、前半を c=ac = a, n=pn = p, m=bm = b として適用すれば p∣bp \mid b が出ます。

前半の形は 整除と素因数分解 の 補題 2.2[整除と素因数分解] でも述べられており、最大公約数・最小公倍数の議論(命題 2.4[整除と素因数分解])に使われています。

定義 3.1(合同)↗

n∈Nn \in \mathbb{N} とする。整数 a,ba, b に対し n∣(a−b)n \mid (a - b) が成り立つとき、aa と bb は nn を法として合同であるといい

a≡b(modn)a \equiv b \pmod n

と書く。nn をこの合同式の法という。

命題 3.2

nn を法とする合同は Z\mathbb{Z} 上の同値関係であり、その同値類はちょうど nn 個、すなわち 0,1,…,n−10, 1, \ldots, n-1 の各々と合同な整数の集まりである。

証明(命題 3.2)

反射律は n∣0=a−an \mid 0 = a - a より成り立ちます。対称律は n∣(a−b)n \mid (a-b) ならば b−a=−(a−b)b - a = -(a-b) も nn の倍数であることから従います。推移律は、a−b=nka - b = nk、b−c=nlb - c = nl とすると a−c=n(k+l)a - c = n(k+l) となることから従います。

同値類の個数を数えます。定理 2.1 により任意の aa は a=qn+ra = qn + r(0≤r<n0 \le r < n)と書けるので a−r=qna - r = qn、すなわち a≡r(modn)a \equiv r \pmod n です。よって各同値類は 0,…,n−10,\ldots,n-1 のいずれかを含みます。また 0≤r<r′<n0 \le r < r' < n なら 0<r′−r<n0 < r' - r < n なので n∤(r′−r)n \nmid (r' - r) であり、rr と r′r' は合同ではありません。ゆえに同値類はちょうど nn 個です。

同値関係一般については 関係と同値関係 - 「同じ」とは何か を参照してください(上の命題の前半は 命題 3.4[関係と同値関係] にあたります)。aa を含む同値類を [a][a] または [a]n[a]_n と書き、aa の剰余類と呼びます。

命題 3.3(合同式の四則)✓

a≡b(modn)a \equiv b \pmod n かつ c≡d(modn)c \equiv d \pmod n とする。このとき

a+c≡b+d,a−c≡b−d,ac≡bd(modn)a + c \equiv b + d, \qquad a - c \equiv b - d, \qquad ac \equiv bd \pmod n

が成り立つ。特に任意の k∈Nk \in \mathbb{N} に対し ak≡bk(modn)a^k \equiv b^k \pmod n である。

証明(命題 3.3)

仮定より a−b=nsa - b = ns、c−d=ntc - d = nt となる整数 s,ts,t が取れます。加法については

(a+c)−(b+d)=(a−b)+(c−d)=n(s+t)(a+c) - (b+d) = (a-b) + (c-d) = n(s+t)

なので nn で割り切れます。減法も符号を変えるだけで同じです。乗法については

ac−bd=ac−bc+bc−bd=c(a−b)+b(c−d)=n(cs+bt)ac - bd = ac - bc + bc - bd = c(a-b) + b(c-d) = n(cs + bt)

と変形できるので n∣(ac−bd)n \mid (ac - bd) です。ここで途中に bcbc を足して引く操作を使いました。

べき乗は kk に関する数学的帰納法です。k=1k=1 は仮定そのものです。ak≡bka^k \equiv b^k が成り立つとすると、これと a≡ba \equiv b に乗法の主張を適用して ak+1≡bk+1a^{k+1} \equiv b^{k+1} を得ます。

命題 3.3 が、合同式を等式のように扱ってよい根拠です。これがあるおかげで、巨大なべき乗を余りだけで追跡できます。

例 3.4(2 の 100 乗の下 2 桁)

2100 mod 1002^{100} \bmod 100 を求めます。210=1024≡24(mod100)2^{10} = 1024 \equiv 24 \pmod{100} です。命題 3.3 により両辺を 22 乗して

220≡242=576≡76(mod100).2^{20} \equiv 24^2 = 576 \equiv 76 \pmod{100}.

さらに 762=5776≡76(mod100)76^2 = 5776 \equiv 76 \pmod{100} なので、240≡762^{40} \equiv 76、280≡762^{80} \equiv 76 です。したがって

2100=280⋅220≡76⋅76=5776≡76(mod100).2^{100} = 2^{80} \cdot 2^{20} \equiv 76 \cdot 76 = 5776 \equiv 76 \pmod{100}.

21002^{100} は 3131 桁の数ですが、33 桁を超える掛け算を一度もせずに下 22 桁が 7676 と分かりました。

例 3.5(九去法と 11 の判定法)

10≡1(mod9)10 \equiv 1 \pmod 9 なので 命題 3.3 より 10k≡1(mod9)10^k \equiv 1 \pmod 9 です。よって N=∑kdk10kN = \sum_{k} d_k 10^k(dkd_k は各位の数字)に対し

N≡∑kdk(mod9)N \equiv \sum_k d_k \pmod 9

となります。これが「各位の数字の和で 99 の倍数を判定できる」ことの証明です。例えば N=987654N = 987654 なら 9+8+7+6+5+4=39≡3+9=12≡3(mod9)9+8+7+6+5+4 = 39 \equiv 3+9 = 12 \equiv 3 \pmod 9 なので N≡3(mod9)N \equiv 3 \pmod 9 です。

一方 10≡−1(mod11)10 \equiv -1 \pmod{11} なので 10k≡(−1)k10^k \equiv (-1)^k となり、

N≡∑k(−1)kdk(mod11)N \equiv \sum_k (-1)^k d_k \pmod{11}

です。987654987654 では下位から交互に符号を付けて 4−5+6−7+8−9=−3≡8(mod11)4 - 5 + 6 - 7 + 8 - 9 = -3 \equiv 8 \pmod{11} となります。

割り算だけは事情が違います。次の命題が、合同式で「両辺を割る」ときの正確な規則です。

命題 3.6(消去法則)✓

n∈Nn \in \mathbb{N}、c∈Zc \in \mathbb{Z}、d=gcd⁡(c,n)d = \gcd(c,n) とする。このとき

ca≡cb(modn)  ⟺  a≡b(modn/d)ca \equiv cb \pmod n \iff a \equiv b \pmod{n/d}

が成り立つ。特に gcd⁡(c,n)=1\gcd(c,n)=1 のときに限り、ca≡cb(modn)ca \equiv cb \pmod n から a≡b(modn)a \equiv b \pmod n が結論できる。

証明(命題 3.6)

c=dc′c = dc'、n=dn′n = dn' と書くと gcd⁡(c′,n′)=1\gcd(c', n') = 1 です(もし e>1e > 1 が両者の公約数なら dede が c,nc,n の公約数となり dd の最大性に反します)。

(⇒)(\Rightarrow) ca≡cb(modn)ca \equiv cb \pmod n は n∣c(a−b)n \mid c(a-b)、すなわち dn′∣dc′(a−b)dn' \mid dc'(a-b) を意味し、両辺を dd で割って n′∣c′(a−b)n' \mid c'(a-b) です。gcd⁡(c′,n′)=1\gcd(c',n')=1 なので 補題 2.3 により n′∣(a−b)n' \mid (a-b)、つまり a≡b(modn′)a \equiv b \pmod{n'} です。

(⇐)(\Leftarrow) n′∣(a−b)n' \mid (a-b) なら n=dn′∣dc′(a−b)=c(a−b)n = dn' \mid dc'(a-b) = c(a-b) なので ca≡cb(modn)ca \equiv cb \pmod n です。

例 3.7(割り算が壊れる例)

2⋅3=62 \cdot 3 = 6、2⋅9=182 \cdot 9 = 18 で、18−6=1218 - 6 = 12 なので 2⋅3≡2⋅9(mod12)2 \cdot 3 \equiv 2 \cdot 9 \pmod{12} です。しかし 9−3=69 - 3 = 6 は 1212 の倍数ではないので 3≢9(mod12)3 \not\equiv 9 \pmod{12} です。命題 3.6 の通り d=gcd⁡(2,12)=2d = \gcd(2,12) = 2 なので、正しく結論できるのは 3≡9(mod6)3 \equiv 9 \pmod 6 までです。実際 9−3=69 - 3 = 6 はこれを満たします。

定義 4.1(剰余環)↗

n∈Nn \in \mathbb{N} とする。nn を法とする剰余類全体の集合を

Z/nZ={[0],[1],…,[n−1]}\mathbb{Z}/n\mathbb{Z} = \{[0], [1], \ldots, [n-1]\}

と書き、演算を

[a]+[b]:=[a+b],[a]⋅[b]:=[ab][a] + [b] := [a+b], \qquad [a] \cdot [b] := [ab]

で定める。

この定義には確認すべきことがあります。[a][a] という記号は同値類であって、代表元 aa の取り方には自由度があるからです。[a]=[a′][a] = [a']、[b]=[b′][b] = [b'] のとき [a+b]=[a′+b′][a+b] = [a'+b'] と [ab]=[a′b′][ab] = [a'b'] が成り立たなければ、演算は定義されたことになりません。これはまさに 命題 3.3 の主張です。したがって演算は代表元の取り方によらず定まります(商集合の言葉で同じことを述べたものが 定理 5.4[関係と同値関係] です)。

命題 4.2

定義 4.1 の演算により Z/nZ\mathbb{Z}/n\mathbb{Z} は単位元 [1][1] をもつ可換環になる。

証明(命題 4.2)

結合律、交換律、分配律はすべて Z\mathbb{Z} における対応する法則から直ちに従います。例えば分配律は

[a]([b]+[c])=[a][b+c]=[a(b+c)]=[ab+ac]=[ab]+[ac]=[a][b]+[a][c][a]([b]+[c]) = [a][b+c] = [a(b+c)] = [ab+ac] = [ab]+[ac] = [a][b]+[a][c]

であり、33 番目の等号だけが Z\mathbb{Z} の分配律、他は定義の書き換えです。加法の単位元は [0][0]、[a][a] の加法逆元は [−a][-a]、乗法の単位元は [1][1] です。

環としての一般論は 環と体の基礎 に、Z/nZ\mathbb{Z}/n\mathbb{Z} をイデアル nZn\mathbb{Z} による商環と見る視点は イデアルと剰余環 の 定理 4.2[イデアルと剰余環] にあります。

定義 4.3(単元群)↗

環 Z/nZ\mathbb{Z}/n\mathbb{Z} の元 [a][a] が単元であるとは、[a][b]=[1][a][b] = [1] となる [b][b] が存在することをいう。単元全体の集合を (Z/nZ)×(\mathbb{Z}/n\mathbb{Z})^{\times} と書く。

命題 4.4

[a]∈Z/nZ[a] \in \mathbb{Z}/n\mathbb{Z} が単元であるための必要十分条件は gcd⁡(a,n)=1\gcd(a,n) = 1 である。また (Z/nZ)×(\mathbb{Z}/n\mathbb{Z})^{\times} は乗法について群をなす。

証明(命題 4.4)

(⇐)(\Leftarrow) gcd⁡(a,n)=1\gcd(a,n)=1 とすると 定理 2.2 により ax+ny=1ax + ny = 1 となる整数 x,yx,y が取れます。これは ax−1=−nyax - 1 = -ny、すなわち ax≡1(modn)ax \equiv 1 \pmod n を意味するので [a][x]=[1][a][x] = [1] です。

(⇒)(\Rightarrow) [a][b]=[1][a][b] = [1] とすると ab−1=nkab - 1 = nk となる整数 kk があり、ab−nk=1ab - nk = 1 です。d=gcd⁡(a,n)d = \gcd(a,n) は左辺の両方の項を割り切るので d∣1d \mid 1、よって d=1d = 1 です。

群であることを確かめます。[1][1] は単元です。単元 [a],[b][a],[b] の積 [ab][ab] は、[a][x]=[1][a][x]=[1]、[b][y]=[1][b][y]=[1] とすると [ab][xy]=[a][x][b][y]=[1][ab][xy] = [a][x][b][y] = [1] なので単元であり、演算は閉じています。結合律は環の乗法から、逆元の存在は単元の定義から従います。

系 4.5

Z/nZ\mathbb{Z}/n\mathbb{Z} が体であるための必要十分条件は nn が素数であることである。

証明(系 4.5)

n=pn = p を素数とします。[a]≠[0][a] \ne [0] とは p∤ap \nmid a ということで、pp が素数だから gcd⁡(a,p)∈{1,p}\gcd(a,p) \in \{1,p\} のうち pp は除かれ gcd⁡(a,p)=1\gcd(a,p)=1 です。命題 4.4 より [a][a] は単元なので、Z/pZ\mathbb{Z}/p\mathbb{Z} は体です(p≥2p \ge 2 より [1]≠[0][1] \ne [0] も満たされます)。

逆に nn が合成数なら n=abn = ab(1<a,b<n1 < a, b < n)と書け、[a]≠[0][a] \ne [0]、[b]≠[0][b] \ne [0] でありながら [a][b]=[n]=[0][a][b] = [n] = [0] です。体には零因子がない([a][b]=[0][a][b]=[0] かつ [a][a] が可逆なら両辺に [a]−1[a]^{-1} を掛けて [b]=[0][b]=[0])ので、これは体ではありません。n=1n = 1 のときは [1]=[0][1]=[0] なので体の定義を満たしません。

素数 pp に対する体 Z/pZ\mathbb{Z}/p\mathbb{Z} を Fp\mathbb{F}_p と書きます。系 4.5 は、素数が「割り算のできる有限世界」を作る唯一の法であることを言っています。素数の特別さがここで代数的な形をとります。同じ主張は環論の側からも 系 5.5[環と体の基礎] として得られます。

定義 4.6(オイラーのトーシェント関数)↗

n∈Nn \in \mathbb{N} に対し

φ(n):=#{a∈Z∣1≤a≤n, gcd⁡(a,n)=1}\varphi(n) := \#\{a \in \mathbb{Z} \mid 1 \le a \le n,\ \gcd(a,n)=1\}

と定める。命題 4.4 により φ(n)=#(Z/nZ)×\varphi(n) = \#(\mathbb{Z}/n\mathbb{Z})^{\times} である。

例 4.7(Z/12Z の単元群)

11 から 1212 までで 1212 と互いに素なものは 1,5,7,111, 5, 7, 11 の 44 個なので φ(12)=4\varphi(12)=4、(Z/12Z)×={[1],[5],[7],[11]}(\mathbb{Z}/12\mathbb{Z})^{\times} = \{[1],[5],[7],[11]\} です。乗法表を作ると

[5]2=[25]=[1],[7]2=[49]=[1],[11]2=[121]=[1],[5][7]=[35]=[11][5]^2 = [25] = [1], \quad [7]^2 = [49] = [1], \quad [11]^2 = [121] = [1], \quad [5][7] = [35] = [11]

となり、単位元以外のすべての元が位数 22 です。したがってこの群はクラインの四元群 Z/2Z×Z/2Z\mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} と同型で、巡回群ではありません。一方 pp が素数のとき (Z/pZ)×(\mathbb{Z}/p\mathbb{Z})^{\times} は必ず巡回群になることが知られています(原始根の存在)。

上の例の補足です。巡回群とは、ある 1 つの元のべきをすべて集めると群全体になる群のことです。クラインの四元群は、単位元以外の 3 つの元がどれも 2 乗すると単位元に戻る、4 元からなる群のことです。Z/12Z\mathbb{Z}/12\mathbb{Z} の単元群は後者の形なので、1 つの元のべきでは全体を作れません。

次の中国剰余定理は、「mnmn で割った余り」と「mm で割った余りと nn で割った余りの組」が過不足なく対応する、という主張です。例えば 15=3×515 = 3 \times 5 なら、00 から 1414 の 15 個の整数が、33 で割った余り(3 通り)と 55 で割った余り(5 通り)の組 15 通りに 1 つずつ対応します。

定理 4.8(中国剰余定理)✓

m,n∈Nm, n \in \mathbb{N} が gcd⁡(m,n)=1\gcd(m,n)=1 を満たすとする。このとき写像

Φ:Z/mnZ⟶Z/mZ×Z/nZ,[a]mn⟼([a]m,[a]n)\Phi : \mathbb{Z}/mn\mathbb{Z} \longrightarrow \mathbb{Z}/m\mathbb{Z} \times \mathbb{Z}/n\mathbb{Z}, \qquad [a]_{mn} \longmapsto ([a]_m, [a]_n)

は well-defined な環同型である。特に任意の整数 r,sr, s に対し連立合同式 x≡r(modm)x \equiv r \pmod m, x≡s(modn)x \equiv s \pmod n は mnmn を法として一意な解をもつ。

証明(定理 4.8)

well-defined 性: [a]mn=[a′]mn[a]_{mn} = [a']_{mn} なら mn∣(a−a′)mn \mid (a-a') なので特に m∣(a−a′)m \mid (a-a')、n∣(a−a′)n \mid (a-a') であり、([a]m,[a]n)=([a′]m,[a′]n)([a]_m,[a]_n) = ([a']_m,[a']_n) です。環準同型であることは、両成分での加法と乗法がともに 定義 4.1 の演算に一致することから直ちに従います。Φ([1]mn)=([1]m,[1]n)\Phi([1]_{mn}) = ([1]_m,[1]_n) も明らかです。

単射性: Φ([a]mn)=([0]m,[0]n)\Phi([a]_{mn}) = ([0]_m,[0]_n) とすると m∣am \mid a かつ n∣an \mid a です。a=mka = mk と書くと n∣mkn \mid mk で、gcd⁡(n,m)=1\gcd(n,m)=1 なので 補題 2.3 により n∣kn \mid k、すなわち k=nlk = nl です。よって a=mnla = mnl、つまり [a]mn=[0]mn[a]_{mn} = [0]_{mn} です。準同型の核が 00 だけなので Φ\Phi は単射です。

全射性: 定義域と値域はともに有限集合で、要素数はそれぞれ mnmn と m⋅nm \cdot n で等しくなります。単射な写像が有限の等濃度集合の間にあれば全射なので、Φ\Phi は全単射です。

最後の主張は Φ\Phi の全単射性そのものです。([r]m,[s]n)([r]_m,[s]_n) の逆像がちょうど一つの剰余類 [x]mn[x]_{mn} であることが、解の存在と mnmn を法とする一意性を意味します。

法が互いに素でない場合の連立合同式(解の存在条件は gcd⁡(m,n)∣r−s\gcd(m,n)\mid r-s、解は lcm(m,n)\mathrm{lcm}(m,n) を法として一意)は、整除と素因数分解 の 定理 6.1[整除と素因数分解] で扱っています。

系 4.9

gcd⁡(m,n)=1\gcd(m,n)=1 ならば φ(mn)=φ(m)φ(n)\varphi(mn) = \varphi(m)\varphi(n) である。さらに n=p1e1⋯pkekn = p_1^{e_1}\cdots p_k^{e_k} を素因数分解とすると

φ(n)=n∏i=1k(1−1pi).\varphi(n) = n \prod_{i=1}^{k}\left(1 - \frac{1}{p_i}\right).
証明(系 4.9)

環同型は単元を単元に、非単元を非単元に写します(Φ(u)Φ(u−1)=Φ(1)=1\Phi(u)\Phi(u^{-1}) = \Phi(1) = 1、逆向きも Φ−1\Phi^{-1} について同様)。したがって 定理 4.8 の Φ\Phi は単元群の間の全単射

(Z/mnZ)×→ ∼ (Z/mZ)××(Z/nZ)×(\mathbb{Z}/mn\mathbb{Z})^{\times} \xrightarrow{\ \sim\ } (\mathbb{Z}/m\mathbb{Z})^{\times} \times (\mathbb{Z}/n\mathbb{Z})^{\times}

を誘導します。両辺の要素数を数えれば φ(mn)=φ(m)φ(n)\varphi(mn)=\varphi(m)\varphi(n) です。

素数べき pep^e については、11 から pep^e までの整数のうち pep^e と互いに素でないものは pp の倍数、すなわち p,2p,…,pe−1⋅pp, 2p, \ldots, p^{e-1}\cdot p の pe−1p^{e-1} 個です。よって

φ(pe)=pe−pe−1=pe(1−1p).\varphi(p^e) = p^e - p^{e-1} = p^e\left(1 - \frac{1}{p}\right).

異なる素数べきは互いに素なので乗法性を繰り返し使えば公式を得ます。

5. フェルマーの小定理とオイラーの定理

Section titled “5. フェルマーの小定理とオイラーの定理”

フェルマーは 1640 年、フレニクル宛の書簡でこの定理を述べましたが「証明は長くなるので書かない」として省略しました。最初に公表された証明はオイラーによるもの(1736)です。

定理 5.1(フェルマーの小定理)✓

pp を素数、aa を p∤ap \nmid a である整数とする。このとき

ap−1≡1(modp).a^{p-1} \equiv 1 \pmod p .

証明の方針を先に述べます。pp が素数なら、11 から p−1p-1 に aa を掛けて pp で割った余りをとっても、同じ数が並べ替えられて現れるだけです。例えば p=7p=7、a=3a=3 なら 1,2,3,4,5,61,2,3,4,5,6 は 3,6,2,5,1,43,6,2,5,1,4 に移り、全体としては並べ替え(これを置換といいます)になっています。並べ替えても全部の積は変わらないので、「積」と「aa 倍してから作った積」を比べると ap−1a^{p-1} が現れる、という筋です。次の動画で、xx が 11 から 66 まで進むにつれて下段に現れる余りが重ならずに埋まっていく様子を見てください。

上段の 1 から 6 を一つずつ 3 倍して 7 で割った余りへ線で結んでいく動画。1→3、2→6、3→2、4→5、5→1、6→4 と進み、下段の 1 から 6 がすべて一度ずつ埋まって並べ替えになる。
p=7、a=3 のとき、x=1,…,6 を 3 倍して 7 で割った余りへ移す対応。下段には 1 から 6 がちょうど一度ずつ現れる。
証明(定理 5.1)

S={1,2,…,p−1}S = \{1, 2, \ldots, p-1\} とし、写像 σ\sigma を「x∈Sx \in S に ax mod pax \bmod p を対応させる」ものとして定めます。三段階で示します。

第一段階(σ\sigma の値が SS に入ること)。1≤x≤p−11 \le x \le p-1 と p∤ap \nmid a から、補題 2.3 の後半により p∤axp \nmid ax です。よって ax mod p≠0ax \bmod p \ne 0、すなわち σ(x)∈S\sigma(x) \in S です。

第二段階(σ\sigma が単射であること)。σ(x)=σ(y)\sigma(x) = \sigma(y) とすると ax≡ay(modp)ax \equiv ay \pmod p です。p∤ap \nmid a より gcd⁡(a,p)=1\gcd(a,p)=1 なので、命題 3.6 を c=ac=a, n=pn=p, d=1d=1 として適用すると x≡y(modp)x \equiv y \pmod p を得ます。x,yx,y はともに 11 以上 p−1p-1 以下なので ∣x−y∣<p|x-y| < p であり、x=yx = y です。有限集合 SS から自身への単射は全単射なので、σ\sigma は SS の置換です。

第三段階(積の比較)。σ\sigma が置換であることから

∏x∈Sσ(x)=∏x∈Sx=(p−1)!.\prod_{x \in S} \sigma(x) = \prod_{x \in S} x = (p-1)! .

一方、各 xx について σ(x)≡ax(modp)\sigma(x) \equiv ax \pmod p なので、命題 3.3 を p−1p-1 回使って

∏x∈Sσ(x)≡∏x∈S(ax)=ap−1(p−1)!(modp).\prod_{x \in S}\sigma(x) \equiv \prod_{x\in S} (ax) = a^{p-1}(p-1)! \pmod p .

両者を合わせると ap−1(p−1)!≡(p−1)!(modp)a^{p-1}(p-1)! \equiv (p-1)! \pmod p です。1≤x≤p−11 \le x \le p-1 の各 xx は pp で割り切れないので、補題 2.3 を繰り返して p∤(p−1)!p \nmid (p-1)!、すなわち gcd⁡((p−1)!,p)=1\gcd((p-1)!,p)=1 です。よって 命題 3.6 により (p−1)!(p-1)! を消去でき、ap−1≡1(modp)a^{p-1} \equiv 1 \pmod p を得ます。

系 5.2

pp を素数とすると、すべての整数 aa に対して ap≡a(modp)a^{p} \equiv a \pmod p が成り立つ。

証明(系 5.2)

p∤ap \nmid a のときは 定理 5.1 の両辺に aa を掛ければ ap≡a(modp)a^p \equiv a \pmod p です。p∣ap \mid a のときは a≡0(modp)a \equiv 0 \pmod p なので 命題 3.3 により ap≡0p=0≡a(modp)a^p \equiv 0^p = 0 \equiv a \pmod p です。どちらの場合も成り立ちます。

系 5.2 の形は aa に条件が付かないので使い勝手がよく、後で RSA の正当性を示すときに効きます。

定理 5.3(オイラーの定理)✓

n∈Nn \in \mathbb{N}、a∈Za \in \mathbb{Z} が gcd⁡(a,n)=1\gcd(a,n)=1 を満たすとする。このとき

aφ(n)≡1(modn).a^{\varphi(n)} \equiv 1 \pmod n .

方針は小定理と同じです。11 から p−1p-1 の代わりに、nn と互いに素な余り類(単元)全体を考えます。aa 倍しても単元全体が並べ替えられるだけなので、全部の積を二通りに表して比べます。

証明(定理 5.3)

定理 5.1 の証明をそのまま持ち上げます。U=(Z/nZ)×U = (\mathbb{Z}/n\mathbb{Z})^{\times} とおき、#U=φ(n)\#U = \varphi(n) です(定義 4.6)。gcd⁡(a,n)=1\gcd(a,n)=1 なので 命題 4.4 より [a]∈U[a] \in U です。

写像 μ[a]:U→U\mu_{[a]} : U \to U, [x]↦[a][x][x] \mapsto [a][x] を考えます。UU が群であること(命題 4.4)から [a][x]∈U[a][x] \in U であり、μ[a]\mu_{[a]} は UU から UU への写像です。また μ[a]−1\mu_{[a]^{-1}} が逆写像を与えるので μ[a]\mu_{[a]} は全単射、すなわち UU の置換です。

そこで UU の全元の積 P=∏[x]∈U[x]P = \prod_{[x]\in U}[x] を二通りに計算します。置換で並べ替えても積は変わらないので

P=∏[x]∈Uμ[a]([x])=∏[x]∈U[a][x]=[a]φ(n)P.P = \prod_{[x]\in U} \mu_{[a]}([x]) = \prod_{[x]\in U} [a][x] = [a]^{\varphi(n)} P .

PP は単元の積なので単元であり(命題 4.4 の群の性質)、両辺に P−1P^{-1} を掛けて [a]φ(n)=[1][a]^{\varphi(n)} = [1]、すなわち aφ(n)≡1(modn)a^{\varphi(n)} \equiv 1 \pmod n です。

注意 5.4

定理 5.3 は群論の言葉では一行です。有限群 GG の元 gg に対し g#G=eg^{\#G} = e が成り立つ、というラグランジュの定理の系を G=(Z/nZ)×G = (\mathbb{Z}/n\mathbb{Z})^{\times} に適用しただけだからです。詳しくは 部分群と剰余類(ラグランジュの定理) の 定理 7.3[部分群と剰余類] を参照してください。上の証明は、その特別な場合を群論の言葉なしで書き下したものにあたります。歴史的にはこちらが先で、群という概念はこうした具体例の集積から抽出されました(群論入門 - 群の定義と例)。

命題 5.5

pp を素数、p∤ap \nmid a とすると、Z/pZ\mathbb{Z}/p\mathbb{Z} における [a][a] の逆元は [ap−2][a^{p-2}] で与えられる。

証明(命題 5.5)

p≥2p \ge 2 より p−2≥0p - 2 \ge 0 なので ap−2a^{p-2} は整数です。定理 5.1 により

[a]⋅[ap−2]=[ap−1]=[1][a] \cdot [a^{p-2}] = [a^{p-1}] = [1]

です。逆元は一意なので(群の一般論、あるいは [b],[b′][b],[b'] がともに逆元なら [b]=[b][a][b′]=[b′][b] = [b][a][b'] = [b'])、これが [a]−1[a]^{-1} です。

例 5.6(3 の 1000 乗を 7 で割った余り)

77 は素数で 7∤37 \nmid 3 なので、定理 5.1 により 36≡1(mod7)3^6 \equiv 1 \pmod 7 です。1000=6⋅166+41000 = 6 \cdot 166 + 4 なので

31000=(36)166⋅34≡1166⋅34=81(mod7).3^{1000} = (3^{6})^{166} \cdot 3^{4} \equiv 1^{166}\cdot 3^4 = 81 \pmod 7 .

81=7⋅11+481 = 7\cdot 11 + 4 なので 31000≡4(mod7)3^{1000} \equiv 4 \pmod 7 です。指数を φ(7)=6\varphi(7)=6 で割った余りに置き換えられる、というのが小定理の実用的な使い方です。

6. 応用 — 高速べき乗、RSA、素数判定

Section titled “6. 応用 — 高速べき乗、RSA、素数判定”

ae mod na^e \bmod n を計算するのに ee 回の掛け算は要りません。ee を 22 進展開し、a,a2,a4,…a, a^2, a^4, \ldots を順に二乗しながら必要なものだけ掛ければ、掛け算は O(log⁡e)O(\log e) 回で済みます。各段で  mod  n\bmod\ n を取るので、途中の数が n2n^2 を超えることもありません(根拠は 命題 3.3)。

def power_mod(a, e, n):
"""a^e mod n を繰り返し二乗法で計算する。e >= 0, n >= 1。"""
result = 1
a %= n
while e > 0:
if e & 1:
result = result * a % n
a = a * a % n
e >>= 1
return result
assert power_mod(2, 100, 100) == 76 # 2^100 の下 2 桁
assert power_mod(3, 1000, 7) == 4 # 3^1000 を 7 で割った余り

逆元の計算には 定理 2.2 の証明を手続きに直した拡張ユークリッドの互除法を使います。

def ext_gcd(a, b):
"""(g, x, y) を返す。g = gcd(a, b) かつ a*x + b*y = g。"""
if b == 0:
return (a, 1, 0)
g, x, y = ext_gcd(b, a % b)
return (g, y, x - (a // b) * y)
def inverse_mod(a, n):
g, x, _ = ext_gcd(a % n, n)
if g != 1:
raise ValueError("逆元が存在しません")
return x % n
assert inverse_mod(7, 120) == 103

定理 6.1(RSA の正当性)✓

p≠qp \ne q を素数とし、n=pqn = pq、φ(n)=(p−1)(q−1)\varphi(n) = (p-1)(q-1) とする。整数 e,de, d が

ed≡1(modφ(n)),gcd⁡(e,φ(n))=1ed \equiv 1 \pmod{\varphi(n)}, \qquad \gcd(e,\varphi(n)) = 1

を満たすとする。このときすべての整数 mm に対して

(me)d≡m(modn)(m^{e})^{d} \equiv m \pmod n

が成り立つ。

証明(定理 6.1)

仮定より ed=1+kφ(n)=1+k(p−1)(q−1)ed = 1 + k\varphi(n) = 1 + k(p-1)(q-1) となる整数 k≥0k \ge 0 が取れます(ed≥1ed \ge 1 としてよい)。

まず med≡m(modp)m^{ed} \equiv m \pmod p を示します。p∣mp \mid m の場合は両辺とも 00 と合同なので成り立ちます。p∤mp \nmid m の場合、定理 5.1 により mp−1≡1(modp)m^{p-1}\equiv 1 \pmod p なので

med=m⋅(mp−1)k(q−1)≡m⋅1k(q−1)=m(modp).m^{ed} = m \cdot \left(m^{p-1}\right)^{k(q-1)} \equiv m \cdot 1^{k(q-1)} = m \pmod p .

ここで 命題 3.3 のべき乗と乗法の性質を使いました。pp と qq を入れ替えれば同じ議論で med≡m(modq)m^{ed}\equiv m \pmod q も出ます。

したがって p∣(med−m)p \mid (m^{ed}-m) かつ q∣(med−m)q \mid (m^{ed}-m) です。p≠qp \ne q はともに素数なので gcd⁡(p,q)=1\gcd(p,q)=1 であり、定理 4.8 の単射性の議論(あるいは 補題 2.3 を直接)により pq∣(med−m)pq \mid (m^{ed}-m)、すなわち med≡m(modn)m^{ed}\equiv m \pmod n です。

gcd⁡(m,n)=1\gcd(m,n)=1 を仮定していない点が重要です。定理 5.3 をそのまま使うとこの仮定が要りますが、素因数ごとに分けて 系 5.2 の形を使えば仮定なしで済みます。

RSA の鍵生成と暗号化・復号の流れ。安全性は n から p, q を復元する困難さに依存する。

例 6.2(小さな鍵で RSA を最後まで計算する)

p=11p = 11, q=13q = 13 とすると n=143n = 143、φ(n)=10⋅12=120\varphi(n) = 10 \cdot 12 = 120 です。e=7e = 7 は gcd⁡(7,120)=1\gcd(7,120)=1 を満たします。dd は 7d≡1(mod120)7d \equiv 1 \pmod{120} の解で、7⋅103=721=6⋅120+17 \cdot 103 = 721 = 6\cdot 120 + 1 より d=103d = 103 です。

平文 m=5m = 5 を暗号化します。

52=25,54≡252=625=4⋅143+53≡53(mod143),5^2 = 25,\quad 5^4 \equiv 25^2 = 625 = 4\cdot 143 + 53 \equiv 53 \pmod{143},c=57=54⋅52⋅5≡53⋅25⋅5(mod143).c = 5^7 = 5^4\cdot 5^2 \cdot 5 \equiv 53 \cdot 25 \cdot 5 \pmod{143}.

53⋅25=1325=9⋅143+38≡3853\cdot 25 = 1325 = 9\cdot 143 + 38 \equiv 38、38⋅5=190=143+47≡4738 \cdot 5 = 190 = 143 + 47 \equiv 47 なので c=47c = 47 です。

復号します。47103 mod 14347^{103} \bmod 143 を直接計算する代わりに 定理 4.8 を使い、法 1111 と法 1313 に分けます。

法 1111: 47=4⋅11+3≡347 = 4\cdot 11 + 3 \equiv 3 であり、定理 5.1 より 310≡1(mod11)3^{10}\equiv 1 \pmod{11}、103=10⋅10+3103 = 10\cdot 10 + 3 なので 47103≡33=27≡5(mod11)47^{103} \equiv 3^{3} = 27 \equiv 5 \pmod{11}。

法 1313: 47=3⋅13+8≡847 = 3\cdot 13 + 8 \equiv 8、812≡1(mod13)8^{12}\equiv 1 \pmod{13}、103=12⋅8+7103 = 12\cdot 8 + 7 なので 47103≡87(mod13)47^{103}\equiv 8^{7} \pmod{13}。ここで 82=64=4⋅13+12≡−18^2 = 64 = 4\cdot 13 + 12 \equiv -1 なので 87=(82)3⋅8≡(−1)3⋅8=−8≡5(mod13)8^7 = (8^2)^3 \cdot 8 \equiv (-1)^3\cdot 8 = -8 \equiv 5 \pmod{13}。

x≡5(mod11)x \equiv 5 \pmod{11} かつ x≡5(mod13)x \equiv 5 \pmod{13} を満たす 143143 を法とする唯一の解は x=5x = 5 です。確かに平文 m=5m=5 が復元されました。

6.3. フェルマー素数判定とカーマイケル数

Section titled “6.3. フェルマー素数判定とカーマイケル数”

系 5.2 の対偶は素数判定に使えます。ある aa について an−1≢1(modn)a^{n-1}\not\equiv 1 \pmod n(かつ gcd⁡(a,n)=1\gcd(a,n)=1)なら nn は素数ではありません。この判定は繰り返し二乗法で高速に実行できます。

問題は逆です。an−1≡1(modn)a^{n-1}\equiv 1 \pmod n が成り立ったからといって nn が素数とは限りません。

定義 6.3(カーマイケル数)↗

合成数 nn が、gcd⁡(a,n)=1\gcd(a,n)=1 を満たすすべての整数 aa に対して an−1≡1(modn)a^{n-1}\equiv 1 \pmod n を満たすとき、nn をカーマイケル数という。

例 6.4(561 はカーマイケル数)

561=3⋅11⋅17561 = 3\cdot 11\cdot 17 で合成数です。560560 は 2,10,162, 10, 16 のいずれでも割り切れます(560=2⋅280=10⋅56=16⋅35560 = 2\cdot 280 = 10\cdot 56 = 16\cdot 35)。gcd⁡(a,561)=1\gcd(a,561)=1 とすると aa は 3,11,173, 11, 17 のいずれでも割り切れないので、定理 5.1 より

a2≡1(mod3),a10≡1(mod11),a16≡1(mod17).a^{2}\equiv 1 \pmod 3, \qquad a^{10}\equiv 1\pmod{11}, \qquad a^{16}\equiv 1 \pmod{17}.

560560 がこれらの指数の倍数なので、a560=(a2)280≡1(mod3)a^{560} = (a^{2})^{280} \equiv 1 \pmod 3 などが成り立ち、三つの素数すべてを法として a560≡1a^{560}\equiv 1 です。定理 4.8 を二回使えば 561∣(a560−1)561 \mid (a^{560}-1)、すなわち a560≡1(mod561)a^{560}\equiv 1 \pmod{561} を得ます。

561561 は最小のカーマイケル数です。1994 年に Alford, Granville, Pomerance がカーマイケル数は無限に存在することを証明しました。

したがってフェルマー判定は決定的な素数判定にはなりません。この欠陥を補うのがミラー・ラビン判定で、n−1=2stn-1 = 2^{s}t(tt は奇数)と書いて at,a2t,…a^{t}, a^{2t},\ldots の列を見ることで「11 の自明でない平方根」の出現を検出します。Z/pZ\mathbb{Z}/p\mathbb{Z} が体(系 4.5)なら x2=1x^2 = 1 の解は ±1\pm 1 に限る、という事実が原理です。合成数がミラー・ラビン判定をすり抜ける確率は各底について 1/41/4 以下なので、底をいくつも取れば実用上は十分な確実性が得られます。

注意 6.5

この記事で扱った Z/nZ\mathbb{Z}/n\mathbb{Z} は、数論の対象を有限の代数系に写して調べる最初の一歩です。同じ発想を推し進めると、方程式の解の個数を各素数 pp ごとに Fp\mathbb{F}_p で数え、それを母関数にまとめる、という手続きに至ります。楕円曲線に対してこれを行ったものがハッセ・ヴェイユ LL 関数で、楕円曲線とモジュラー形式 と フェルマーの最終定理 の主題になります。名前は似ていますが、フェルマーの小定理と最終定理の間にはこれだけの距離があります。

演習 7.1易

720267^{2026} の一の位の数字を求めてください。

解答

一の位は 1010 を法とする剰余です。gcd⁡(7,10)=1\gcd(7,10)=1 で φ(10)=φ(2)φ(5)=1⋅4=4\varphi(10)=\varphi(2)\varphi(5)=1\cdot 4=4(系 4.9)なので、定理 5.3 により 74≡1(mod10)7^{4}\equiv 1 \pmod{10} です。2026=4⋅506+22026 = 4\cdot 506 + 2 なので

72026=(74)506⋅72≡1506⋅49≡9(mod10).7^{2026} = (7^{4})^{506}\cdot 7^{2} \equiv 1^{506}\cdot 49 \equiv 9 \pmod{10}.

よって一の位は 99 です。

演習 7.2標準

pp を素数とするとき (p−1)!≡−1(modp)(p-1)! \equiv -1 \pmod p(ウィルソンの定理)を証明してください。

解答

p=2p = 2 のときは 1!=1≡−1(mod2)1! = 1 \equiv -1 \pmod 2 で成り立つので、以下 pp は奇素数とします。

Z/pZ\mathbb{Z}/p\mathbb{Z} は体なので(系 4.5)、[1],…,[p−1][1],\ldots,[p-1] はすべて可逆です。まず自分自身が逆元になる元を決定します。[x]2=[1][x]^2=[1] は p∣(x−1)(x+1)p \mid (x-1)(x+1) と同値で、補題 2.3 により p∣(x−1)p \mid (x-1) または p∣(x+1)p \mid (x+1)、すなわち x≡1x \equiv 1 または x≡−1(modp)x\equiv -1 \pmod p です。pp が奇素数なら 1≢−11 \not\equiv -1 なので、自己逆元は [1][1] と [p−1][p-1] の二つちょうどです。

残りの p−3p-3 個の元は、[x][x] と [x]−1[x]^{-1} の相異なる二元の組に分割されます(逆元の一意性より、この対応は矛盾なく組を作ります)。各組の積は [1][1] なので

(p−1)!=∏x=1p−1[x]=[1]⋅[p−1]⋅∏組[1]=[p−1]=[−1].(p-1)! = \prod_{x=1}^{p-1}[x] = [1]\cdot [p-1]\cdot \prod_{\text{組}} [1] = [p-1] = [-1].

よって (p−1)!≡−1(modp)(p-1)!\equiv -1 \pmod p です。

演習 7.3標準

341=11⋅31341 = 11\cdot 31 について、2340≡1(mod341)2^{340}\equiv 1 \pmod{341} を示してください(341341 は底 22 に関するフェルマー擬素数です)。また 3340 mod 3413^{340} \bmod 341 を計算し、底 33 では合成数と判定されることを確かめてください。

解答

底 22: 210=1024=93⋅11+12^{10}=1024 = 93\cdot 11 + 1 なので 210≡1(mod11)2^{10}\equiv 1 \pmod{11} であり、340=10⋅34340 = 10\cdot 34 より 2340≡1(mod11)2^{340}\equiv 1 \pmod{11} です。また 25=32=31+1≡1(mod31)2^{5}=32 = 31+1 \equiv 1 \pmod{31} で 340=5⋅68340 = 5\cdot 68 なので 2340≡1(mod31)2^{340}\equiv 1 \pmod{31} です。gcd⁡(11,31)=1\gcd(11,31)=1 なので 定理 4.8 により 341∣(2340−1)341 \mid (2^{340}-1)、すなわち 2340≡1(mod341)2^{340}\equiv 1\pmod{341} です。

底 33: 法 1111 では 35=243=22⋅11+1≡13^{5}=243 = 22\cdot 11 + 1 \equiv 1 で 340=5⋅68340 = 5\cdot 68 より 3340≡1(mod11)3^{340}\equiv 1 \pmod{11} です。法 3131 では、定理 5.1 より 330≡13^{30}\equiv 1 で 340=30⋅11+10340 = 30\cdot 11 + 10 なので 3340≡310(mod31)3^{340}\equiv 3^{10} \pmod{31} です。33=273^{3}=27、35=243=7⋅31+26≡−53^{5}=243 = 7\cdot 31 + 26 \equiv -5 なので 310≡(−5)2=25(mod31)3^{10} \equiv (-5)^2 = 25 \pmod{31} です。

3340≡25≢1(mod31)3^{340}\equiv 25 \not\equiv 1 \pmod{31} なので 3340≢1(mod341)3^{340}\not\equiv 1 \pmod{341} であり、系 5.2 の対偶から 341341 は合成数と判定されます。値を求めるには x≡1(mod11)x\equiv 1 \pmod{11}, x≡25(mod31)x \equiv 25 \pmod{31} を解きます。x=25+31kx = 25 + 31k とおくと 25≡325 \equiv 3, 31≡9(mod11)31\equiv 9 \pmod{11} より 3+9k≡13 + 9k \equiv 1、9k≡−2≡9(mod11)9k \equiv -2 \equiv 9 \pmod{11}、gcd⁡(9,11)=1\gcd(9,11)=1 なので 命題 3.6 により k≡1(mod11)k \equiv 1 \pmod{11} です。k=1k=1 として x=56x = 56、すなわち 3340≡56(mod341)3^{340}\equiv 56 \pmod{341} です。

演習 7.4難

合成数 nn がカーマイケル数(定義 6.3)であるならば、nn は平方因子をもたず、かつ nn のすべての素因数 pp について (p−1)∣(n−1)(p-1)\mid (n-1) であることを示してください(コルセルトの判定条件の必要性)。

解答

nn をカーマイケル数とします。

平方因子がないこと。p2∣np^{2}\mid n となる素数 pp があったと仮定します。nn の素因数分解から n=pemn = p^{e}m(e≥2e \ge 2、p∤mp \nmid m)と書けます。gcd⁡(p2,m)=1\gcd(p^{2}, m)=1 なので 定理 4.8 により

a≡1+p(modp2),a≡1(modm)a \equiv 1 + p \pmod{p^{2}}, \qquad a \equiv 1 \pmod{m}

を満たす整数 aa が取れます。この aa は pp で割り切れず(a≡1(modp)a \equiv 1 \pmod p)、mm のどの素因数でも割り切れない(a≡1(modm)a\equiv 1 \pmod m)ので gcd⁡(a,n)=1\gcd(a,n)=1 です。

二項定理より (modp2)\pmod{p^{2}} で

ak≡(1+p)k≡1+kp(modp2)a^{k} \equiv (1+p)^{k} \equiv 1 + kp \pmod{p^{2}}

です(p2p^{2} 以上の項はすべて p2p^{2} の倍数)。よって an−1≡1(modp2)a^{n-1}\equiv 1 \pmod{p^{2}} は p2∣(n−1)pp^{2} \mid (n-1)p、すなわち p∣(n−1)p \mid (n-1) と同値です。ところが p∣np \mid n なので p∤(n−1)p \nmid (n-1) であり、矛盾します。したがって nn は平方因子をもちません。

(p−1)∣(n−1)(p-1)\mid(n-1) であること。pp を nn の素因数とします。Z/pZ\mathbb{Z}/p\mathbb{Z} は体で、その単元群 (Z/pZ)×(\mathbb{Z}/p\mathbb{Z})^{\times} は位数 p−1p-1 の巡回群です。その生成元 gg を取り、定理 4.8 により a≡g(modp)a \equiv g \pmod p かつ a≡1(modn/p)a \equiv 1 \pmod{n/p} を満たす aa を取ると gcd⁡(a,n)=1\gcd(a,n)=1 です(nn は平方因子をもたないので gcd⁡(p,n/p)=1\gcd(p, n/p)=1 が使えます)。

カーマイケル数の定義から an−1≡1(modn)a^{n-1}\equiv 1 \pmod n、特に an−1≡1(modp)a^{n-1}\equiv 1 \pmod p です。すなわち gn−1=1g^{n-1} = 1 が (Z/pZ)×(\mathbb{Z}/p\mathbb{Z})^{\times} で成り立ちます。gg の位数は p−1p-1 なので、gk=1g^{k}=1 となる kk は p−1p-1 の倍数に限ります。よって (p−1)∣(n−1)(p-1)\mid(n-1) です。

(561561 の場合、3−1=23-1=2, 11−1=1011-1=10, 17−1=1617-1=16 がいずれも 560560 を割り切ることは 例 6.4 で確認した通りです。)

  • 高木貞治『初等整数論講義』第 2 版、共立出版、1971 — 第 1 章・第 2 章。合同式の導入からオイラーの定理、原始根までを日本語で読める古典です。
  • G. H. Hardy and E. M. Wright, An Introduction to the Theory of Numbers, 6th ed., Oxford University Press, 2008 — 第 5 章・第 6 章(合同式とフェルマーの定理)。
  • K. Ireland and M. Rosen, A Classical Introduction to Modern Number Theory, 2nd ed., Springer GTM 84, 1990 — 第 3 章・第 4 章。剰余環と単元群の構造を代数的に扱っています。
  • C. F. Gauss, Disquisitiones Arithmeticae, 1801(英訳: Springer, 1986)— 第 1 節・第 2 節に合同記号 ≡\equiv の導入とその基本性質があります。
  • R. L. Rivest, A. Shamir, L. Adleman, “A Method for Obtaining Digital Signatures and Public-Key Cryptosystems”, Communications of the ACM 21 (1978), 120–126. DOI: 10.1145/359340.359342
  • W. R. Alford, A. Granville, C. Pomerance, “There are Infinitely Many Carmichael Numbers”, Annals of Mathematics 139 (1994), 703–722.
  • 雪江明彦『代数学 1 群論入門』日本評論社、2010 — 第 2 章。ラグランジュの定理から 定理 5.3 を導く筋道が書かれています。

Appendix: フェルマーの小定理の組合せ的証明

Section titled “Appendix: フェルマーの小定理の組合せ的証明”

数える対象を用意する。 定理 5.1 には、剰余類を一切使わない証明があります。a≥1a \ge 1 を整数、pp を素数とし、aa 色のビーズを pp 個一列に並べた列全体を XX とします。#X=ap\#X = a^{p} です。

単色の列とそれ以外を分ける。 XX に「巡回シフト」を作用させます。列 (x1,…,xp)(x_1,\ldots,x_p) を (x2,…,xp,x1)(x_2,\ldots,x_p,x_1) に写す操作 τ\tau です。τp\tau^{p} は恒等写像なので、XX は τ\tau の軌道に分割されます。ある列の軌道の大きさを kk とすると、τk\tau^{k} がその列を動かさない最小の正の整数が kk であり、τp\tau^{p} も動かさないことから k∣pk \mid p です。pp は素数なので k=1k = 1 か k=pk = p しかありません。

軌道の大きさが 1 になるのは単色のときだけ。 k=1k=1 とは τ\tau で不変、つまり x1=x2=⋯=xpx_1 = x_2 = \cdots = x_p ということです。そのような列は色の数だけあるので aa 個です。残りの ap−aa^{p}-a 個の列は、すべて大きさ pp の軌道に属します。

数え上げの結論。 XX から単色の列を除いた集合は、大きさ pp の軌道の直和なので、その要素数は pp の倍数です。すなわち

p∣(ap−a),p \mid (a^{p}-a),

これは 系 5.2 にほかなりません。p∤ap \nmid a のときは gcd⁡(a,p)=1\gcd(a,p)=1 なので 命題 3.6 で aa を消去して ap−1≡1(modp)a^{p-1}\equiv 1 \pmod p を得ます。aa が負の整数や 00 の場合は、aa を pp で割った余りに置き換えれば 命題 3.3 により同じ結論が従います。

この証明の意味。 「pp で割り切れる」という数論的事実を、「pp 個ずつの組に分けられる」という数え上げの事実として説明している点が本質です。群 Z/pZ\mathbb{Z}/p\mathbb{Z} が集合に作用し、軌道の大きさが群の位数を割る(定理 6.1[部分群と剰余類])、という軌道・固定点の一般論の最も単純な現れでもあります。

このテーマの 100 本ノック(50 問)

執筆: Claude Code(Sonnet 5.5)・監査 3 回(Claude Code)・最終 2026-10-12

この記事の誤りを報告する ・運営: 夢現技研合同会社 ・料金 ・利用条件 ・特定商取引法に基づく表記

© 2026 夢現技研合同会社 ・コード例は MIT ライセンスです。