整数を「n n n で割った余り」で分類すると、加法・減法・乗法がそのまま持ち込める。これが合同式 a ≡ b ( m o d n ) a \equiv b \pmod n a ≡ b ( mod n ) であり、商集合 Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z は可換環になる。
割り算は無条件にはできない。[ a ] [a] [ a ] が Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z で逆元をもつのは gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 のときに限る。この事実の根拠はベズーの等式ただ一つです。
n n n が素数 p p p のとき Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z は体になり、0 0 0 でない元すべてが可逆になる。ここからフェルマーの小定理 a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod p a p − 1 ≡ 1 ( mod p ) (p ∤ a p \nmid a p ∤ a のとき)が出る。
一般の n n n に対する拡張がオイラーの定理 a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)} \equiv 1 \pmod n a φ ( n ) ≡ 1 ( mod n ) で、証明の骨格はフェルマーの小定理と同じ「a a a 倍写像が単元群の置換である」という一点です。
中国剰余定理は Z / m n Z ≅ Z / m Z × Z / n Z \mathbb{Z}/mn\mathbb{Z} \cong \mathbb{Z}/m\mathbb{Z} \times \mathbb{Z}/n\mathbb{Z} Z / mn Z ≅ Z / m Z × Z / n Z (gcd ( m , n ) = 1 \gcd(m,n)=1 g cd( m , n ) = 1 )という同型で、φ \varphi φ の乗法性と RSA 暗号の正当性の両方を支えている。
フェルマーの小定理の逆は成り立たない。561 561 561 のようなカーマイケル数が反例になり、これが素数判定を確率的アルゴリズムへと押しやった。
いま 7 7 7 時だとして、8 8 8 時間後は何時でしょうか。7 + 8 = 15 7+8=15 7 + 8 = 15 ですが、時計の文字盤には 15 15 15 がないので 3 3 3 時と答えます。私たちは日常的に「12 12 12 で割った余り」の世界で足し算をしているわけです。
0 1 2 3 4 5 6 7 8 9 10 11 7 + 8 = 3 (mod 12) 12 を法とする加法。7 から 8 だけ進むと 3 に戻る。
この「余りだけを見る」計算法は古くから断片的に使われていました。各位の数字の和で 9 9 9 の倍数を判定する九去法は中世の商人の検算術ですし、暦の計算も本質的に剰余の計算です。しかしこれを ≡ \equiv ≡ という記号で体系化し、独立した代数系として扱ったのはガウス『整数論研究』(1801)です。ガウスはこの記号ひとつで、それまで散らばっていた整数論の技法を統一しました。
なぜ記号を導入するだけで進歩が起きるのでしょうか。理由は、合同式が等号とほとんど同じ規則で扱えるからです。「両辺に同じものを足してよい」「両辺に同じものを掛けてよい」が成り立つので、方程式を変形する感覚をそのまま持ち込めます。すると例えば 2 100 2^{100} 2 100 の下 2 2 2 桁のような、まともに計算すれば 31 31 31 桁の数を扱う問題が、100 100 100 未満の数の掛け算数回に化けます。
一方で等号と決定的に違う点もあります。割り算が自由にできません。2 × 3 ≡ 2 × 9 ( m o d 12 ) 2 \times 3 \equiv 2 \times 9 \pmod{12} 2 × 3 ≡ 2 × 9 ( mod 12 ) ですが 3 ≢ 9 ( m o d 12 ) 3 \not\equiv 9 \pmod{12} 3 ≡ 9 ( mod 12 ) です。この「割れる/割れない」の境目を正確に決めることが、この記事の技術的な核心であり、そこからフェルマーの小定理も RSA 暗号も流れ出します。
この記事は 素数の魅力 - 素数定理 の続きにあたります。素数を「どれだけあるか」ではなく「どう振る舞うか」の側から見る回だと思ってください。
以下、Z \mathbb{Z} Z は整数全体、N = { 1 , 2 , 3 , … } \mathbb{N} = \{1,2,3,\ldots\} N = { 1 , 2 , 3 , … } (0 0 0 を含めない)とします。a ∣ b a \mid b a ∣ b は「a a a が b b b を割り切る」、すなわち b = a c b = ac b = a c となる c ∈ Z c \in \mathbb{Z} c ∈ Z が存在することを意味します。
定理 2.1 (除法の原理 )
a ∈ Z a \in \mathbb{Z} a ∈ Z 、n ∈ N n \in \mathbb{N} n ∈ N とする。このとき
a = q n + r , 0 ≤ r < n a = qn + r, \qquad 0 \le r < n a = q n + r , 0 ≤ r < n を満たす整数 q , r q, r q , r がただ一組存在する。
証明(定理 2.1) 存在を示します。集合 S = { a − q n ∣ q ∈ Z } ∩ Z ≥ 0 S = \{a - qn \mid q \in \mathbb{Z}\} \cap \mathbb{Z}_{\ge 0} S = { a − q n ∣ q ∈ Z } ∩ Z ≥ 0 を考えます。q q q として十分小さい負の整数(例えば q = − ∣ a ∣ q = -|a| q = − ∣ a ∣ )を取ると a − q n = a + ∣ a ∣ n ≥ a + ∣ a ∣ ≥ 0 a - qn = a + |a|n \ge a + |a| \ge 0 a − q n = a + ∣ a ∣ n ≥ a + ∣ a ∣ ≥ 0 なので S ≠ ∅ S \ne \varnothing S = ∅ です。S S S は非負整数の空でない部分集合なので、整列性(公理 3.1)[証明の技術] により最小元 r = a − q n r = a - qn r = a − q n をもちます。
もし r ≥ n r \ge n r ≥ n なら r − n = a − ( q + 1 ) n r - n = a - (q+1)n r − n = a − ( q + 1 ) n もまた非負で S S S に属し、r − n < r r - n < r r − n < r となって r r r の最小性に反します。よって 0 ≤ r < n 0 \le r < n 0 ≤ r < n です。
一意性を示します。a = q n + r = q ′ n + r ′ a = qn + r = q'n + r' a = q n + r = q ′ n + r ′ (0 ≤ r , r ′ < n 0 \le r, r' < n 0 ≤ r , r ′ < n )とすると ( q − q ′ ) n = r ′ − r (q - q')n = r' - r ( q − q ′ ) n = r ′ − r です。右辺は ∣ r ′ − r ∣ < n |r' - r| < n ∣ r ′ − r ∣ < n を満たすので、∣ q − q ′ ∣ ⋅ n < n |q - q'| \cdot n < n ∣ q − q ′ ∣ ⋅ n < n 、したがって ∣ q − q ′ ∣ < 1 |q - q'| < 1 ∣ q − q ′ ∣ < 1 、すなわち q = q ′ q = q' q = q ′ です。これを戻すと r = r ′ r = r' r = r ′ を得ます。
∎
この r r r を a m o d n a \bmod n a mod n と書きます。 m o d \bmod mod を「余りを取る演算」として使うときはこの意味です(後で出る ( m o d n ) \pmod n ( mod n ) は関係を表す注記で、役割が違います)。
a , b a, b a , b が同時に 0 0 0 でないとき、a a a と b b b の公約数のうち最大のものを gcd ( a , b ) \gcd(a,b) g cd( a , b ) と書きます。gcd ( a , b ) = 1 \gcd(a,b)=1 g cd( a , b ) = 1 のとき a a a と b b b は互いに素であるといいます(定義 2.1[素数の魅力と素数定理] と同じ記法です)。
定理 2.2 (ベズーの等式 )
a , b a, b a , b を同時には 0 0 0 でない整数とする。このとき
a x + b y = gcd ( a , b ) ax + by = \gcd(a,b) a x + b y = g cd( a , b ) を満たす整数 x , y x, y x , y が存在する。さらに、{ a x + b y ∣ x , y ∈ Z } \{ax+by \mid x,y \in \mathbb{Z}\} { a x + b y ∣ x , y ∈ Z } は gcd ( a , b ) \gcd(a,b) g cd( a , b ) の倍数全体と一致する。
証明(定理 2.2) I = { a x + b y ∣ x , y ∈ Z } I = \{ax + by \mid x, y \in \mathbb{Z}\} I = { a x + b y ∣ x , y ∈ Z } とおき、I I I に含まれる正の整数全体を I + I^{+} I + とします。a ≠ 0 a \ne 0 a = 0 なら a ⋅ a + b ⋅ 0 = a 2 > 0 a \cdot a + b \cdot 0 = a^2 > 0 a ⋅ a + b ⋅ 0 = a 2 > 0 が I + I^{+} I + に属し、a = 0 a = 0 a = 0 なら b ≠ 0 b \ne 0 b = 0 より b 2 ∈ I + b^2 \in I^{+} b 2 ∈ I + です。いずれにせよ I + ≠ ∅ I^{+} \ne \varnothing I + = ∅ なので、整列性により最小元 d = a x 0 + b y 0 > 0 d = ax_0 + by_0 > 0 d = a x 0 + b y 0 > 0 が取れます。
まず d ∣ a d \mid a d ∣ a を示します。定理 2.1 により a = q d + r a = qd + r a = q d + r (0 ≤ r < d 0 \le r < d 0 ≤ r < d )と書くと
r = a − q d = a − q ( a x 0 + b y 0 ) = a ( 1 − q x 0 ) + b ( − q y 0 ) ∈ I . r = a - qd = a - q(ax_0 + by_0) = a(1 - qx_0) + b(-qy_0) \in I . r = a − q d = a − q ( a x 0 + b y 0 ) = a ( 1 − q x 0 ) + b ( − q y 0 ) ∈ I . もし r > 0 r > 0 r > 0 なら r ∈ I + r \in I^{+} r ∈ I + かつ r < d r < d r < d となり d d d の最小性に反します。よって r = 0 r = 0 r = 0 、すなわち d ∣ a d \mid a d ∣ a です。同じ議論で d ∣ b d \mid b d ∣ b も出るので、d d d は a , b a, b a , b の公約数です。
逆に c c c を a , b a, b a , b の任意の公約数とすると、d = a x 0 + b y 0 d = ax_0 + by_0 d = a x 0 + b y 0 の右辺の各項が c c c で割り切れるので c ∣ d c \mid d c ∣ d 、したがって c ≤ d c \le d c ≤ d です。ゆえに d = gcd ( a , b ) d = \gcd(a,b) d = g cd( a , b ) であり、d = a x 0 + b y 0 d = ax_0 + by_0 d = a x 0 + b y 0 が求める表示です。
最後の主張は、I I I の任意の元 a x + b y ax+by a x + b y が d ∣ a d \mid a d ∣ a , d ∣ b d \mid b d ∣ b より d d d の倍数であること、逆に d d d の倍数 k d = a ( k x 0 ) + b ( k y 0 ) kd = a(kx_0) + b(ky_0) k d = a ( k x 0 ) + b ( k y 0 ) が I I I に属することから従います。
∎
補題 2.3 (ユークリッドの補題 )
gcd ( c , n ) = 1 \gcd(c,n) = 1 g cd( c , n ) = 1 かつ n ∣ c m n \mid cm n ∣ c m ならば n ∣ m n \mid m n ∣ m である。特に p p p が素数で p ∣ a b p \mid ab p ∣ ab ならば p ∣ a p \mid a p ∣ a または p ∣ b p \mid b p ∣ b である。
証明(補題 2.3) 定理 2.2 により c x + n y = 1 cx + ny = 1 c x + n y = 1 となる整数 x , y x, y x , y が取れます。両辺に m m m を掛けると
m = ( c m ) x + n ( m y ) m = (cm)x + n(my) m = ( c m ) x + n ( m y ) です。仮定より n ∣ c m n \mid cm n ∣ c m なので右辺の第 1 1 1 項は n n n で割り切れ、第 2 2 2 項も明らかに n n n の倍数です。よって n ∣ m n \mid m n ∣ m となります。
後半は、p ∤ a p \nmid a p ∤ a のとき p p p が素数であることから gcd ( p , a ) \gcd(p,a) g cd( p , a ) は 1 1 1 か p p p のいずれかで、p p p ではないので 1 1 1 であり、前半を c = a c = a c = a , n = p n = p n = p , m = b m = b m = b として適用すれば p ∣ b p \mid b p ∣ b が出ます。
∎
定義 3.1 (合同 )
n ∈ N n \in \mathbb{N} n ∈ N とする。整数 a , b a, b a , b に対し n ∣ ( a − b ) n \mid (a - b) n ∣ ( a − b ) が成り立つとき、a a a と b b b は n n n を法として合同であるといい
a ≡ b ( m o d n ) a \equiv b \pmod n a ≡ b ( mod n ) と書く。n n n をこの合同式の法という。
命題 3.2
n n n を法とする合同は Z \mathbb{Z} Z 上の同値関係であり、その同値類はちょうど n n n 個、すなわち 0 , 1 , … , n − 1 0, 1, \ldots, n-1 0 , 1 , … , n − 1 の各々と合同な整数の集まりである。
証明(命題 3.2) 反射律は n ∣ 0 = a − a n \mid 0 = a - a n ∣ 0 = a − a より成り立ちます。対称律は n ∣ ( a − b ) n \mid (a-b) n ∣ ( a − b ) ならば b − a = − ( a − b ) b - a = -(a-b) b − a = − ( a − b ) も n n n の倍数であることから従います。推移律は、a − b = n k a - b = nk a − b = nk 、b − c = n l b - c = nl b − c = n l とすると a − c = n ( k + l ) a - c = n(k+l) a − c = n ( k + l ) となることから従います。
同値類の個数を数えます。定理 2.1 により任意の a a a は a = q n + r a = qn + r a = q n + r (0 ≤ r < n 0 \le r < n 0 ≤ r < n )と書けるので a − r = q n a - r = qn a − r = q n 、すなわち a ≡ r ( m o d n ) a \equiv r \pmod n a ≡ r ( mod n ) です。よって各同値類は 0 , … , n − 1 0,\ldots,n-1 0 , … , n − 1 のいずれかを含みます。また 0 ≤ r < r ′ < n 0 \le r < r' < n 0 ≤ r < r ′ < n なら 0 < r ′ − r < n 0 < r' - r < n 0 < r ′ − r < n なので n ∤ ( r ′ − r ) n \nmid (r' - r) n ∤ ( r ′ − r ) であり、r r r と r ′ r' r ′ は合同ではありません。ゆえに同値類はちょうど n n n 個です。
∎
同値関係一般については 関係と同値関係 - 「同じ」とは何か を参照してください(上の命題の前半は 命題 3.4[関係と同値関係] にあたります)。a a a を含む同値類を [ a ] [a] [ a ] または [ a ] n [a]_n [ a ] n と書き、a a a の剰余類と呼びます。
命題 3.3 (合同式の四則 )
a ≡ b ( m o d n ) a \equiv b \pmod n a ≡ b ( mod n ) かつ c ≡ d ( m o d n ) c \equiv d \pmod n c ≡ d ( mod n ) とする。このとき
a + c ≡ b + d , a − c ≡ b − d , a c ≡ b d ( m o d n ) a + c \equiv b + d, \qquad a - c \equiv b - d, \qquad ac \equiv bd \pmod n a + c ≡ b + d , a − c ≡ b − d , a c ≡ b d ( mod n ) が成り立つ。特に任意の k ∈ N k \in \mathbb{N} k ∈ N に対し a k ≡ b k ( m o d n ) a^k \equiv b^k \pmod n a k ≡ b k ( mod n ) である。
証明(命題 3.3) 仮定より a − b = n s a - b = ns a − b = n s 、c − d = n t c - d = nt c − d = n t となる整数 s , t s,t s , t が取れます。加法については
( a + c ) − ( b + d ) = ( a − b ) + ( c − d ) = n ( s + t ) (a+c) - (b+d) = (a-b) + (c-d) = n(s+t) ( a + c ) − ( b + d ) = ( a − b ) + ( c − d ) = n ( s + t ) なので n n n で割り切れます。減法も符号を変えるだけで同じです。乗法については
a c − b d = a c − b c + b c − b d = c ( a − b ) + b ( c − d ) = n ( c s + b t ) ac - bd = ac - bc + bc - bd = c(a-b) + b(c-d) = n(cs + bt) a c − b d = a c − b c + b c − b d = c ( a − b ) + b ( c − d ) = n ( cs + b t ) と変形できるので n ∣ ( a c − b d ) n \mid (ac - bd) n ∣ ( a c − b d ) です。ここで途中に b c bc b c を足して引く操作を使いました。
べき乗は k k k に関する数学的帰納法です。k = 1 k=1 k = 1 は仮定そのものです。a k ≡ b k a^k \equiv b^k a k ≡ b k が成り立つとすると、これと a ≡ b a \equiv b a ≡ b に乗法の主張を適用して a k + 1 ≡ b k + 1 a^{k+1} \equiv b^{k+1} a k + 1 ≡ b k + 1 を得ます。
∎
命題 3.3 が、合同式を等式のように扱ってよい根拠です。これがあるおかげで、巨大なべき乗を余りだけで追跡できます。
例 3.4 (2 の 100 乗の下 2 桁 )
2 100 m o d 100 2^{100} \bmod 100 2 100 mod 100 を求めます。2 10 = 1024 ≡ 24 ( m o d 100 ) 2^{10} = 1024 \equiv 24 \pmod{100} 2 10 = 1024 ≡ 24 ( mod 100 ) です。命題 3.3 により両辺を 2 2 2 乗して
2 20 ≡ 24 2 = 576 ≡ 76 ( m o d 100 ) . 2^{20} \equiv 24^2 = 576 \equiv 76 \pmod{100}. 2 20 ≡ 2 4 2 = 576 ≡ 76 ( mod 100 ) . さらに 76 2 = 5776 ≡ 76 ( m o d 100 ) 76^2 = 5776 \equiv 76 \pmod{100} 7 6 2 = 5776 ≡ 76 ( mod 100 ) なので、2 40 ≡ 76 2^{40} \equiv 76 2 40 ≡ 76 、2 80 ≡ 76 2^{80} \equiv 76 2 80 ≡ 76 です。したがって
2 100 = 2 80 ⋅ 2 20 ≡ 76 ⋅ 76 = 5776 ≡ 76 ( m o d 100 ) . 2^{100} = 2^{80} \cdot 2^{20} \equiv 76 \cdot 76 = 5776 \equiv 76 \pmod{100}. 2 100 = 2 80 ⋅ 2 20 ≡ 76 ⋅ 76 = 5776 ≡ 76 ( mod 100 ) . 2 100 2^{100} 2 100 は 31 31 31 桁の数ですが、3 3 3 桁を超える掛け算を一度もせずに下 2 2 2 桁が 76 76 76 と分かりました。
例 3.5 (九去法と 11 の判定法 )
10 ≡ 1 ( m o d 9 ) 10 \equiv 1 \pmod 9 10 ≡ 1 ( mod 9 ) なので 命題 3.3 より 10 k ≡ 1 ( m o d 9 ) 10^k \equiv 1 \pmod 9 1 0 k ≡ 1 ( mod 9 ) です。よって N = ∑ k d k 10 k N = \sum_{k} d_k 10^k N = ∑ k d k 1 0 k (d k d_k d k は各位の数字)に対し
N ≡ ∑ k d k ( m o d 9 ) N \equiv \sum_k d_k \pmod 9 N ≡ k ∑ d k ( mod 9 ) となります。これが「各位の数字の和で 9 9 9 の倍数を判定できる」ことの証明です。例えば N = 987654 N = 987654 N = 987654 なら 9 + 8 + 7 + 6 + 5 + 4 = 39 ≡ 3 + 9 = 12 ≡ 3 ( m o d 9 ) 9+8+7+6+5+4 = 39 \equiv 3+9 = 12 \equiv 3 \pmod 9 9 + 8 + 7 + 6 + 5 + 4 = 39 ≡ 3 + 9 = 12 ≡ 3 ( mod 9 ) なので N ≡ 3 ( m o d 9 ) N \equiv 3 \pmod 9 N ≡ 3 ( mod 9 ) です。
一方 10 ≡ − 1 ( m o d 11 ) 10 \equiv -1 \pmod{11} 10 ≡ − 1 ( mod 11 ) なので 10 k ≡ ( − 1 ) k 10^k \equiv (-1)^k 1 0 k ≡ ( − 1 ) k となり、
N ≡ ∑ k ( − 1 ) k d k ( m o d 11 ) N \equiv \sum_k (-1)^k d_k \pmod{11} N ≡ k ∑ ( − 1 ) k d k ( mod 11 ) です。987654 987654 987654 では下位から交互に符号を付けて 4 − 5 + 6 − 7 + 8 − 9 = − 3 ≡ 8 ( m o d 11 ) 4 - 5 + 6 - 7 + 8 - 9 = -3 \equiv 8 \pmod{11} 4 − 5 + 6 − 7 + 8 − 9 = − 3 ≡ 8 ( mod 11 ) となります。
割り算だけは事情が違います。次の命題が、合同式で「両辺を割る」ときの正確な規則です。
命題 3.6 (消去法則 )
n ∈ N n \in \mathbb{N} n ∈ N 、c ∈ Z c \in \mathbb{Z} c ∈ Z 、d = gcd ( c , n ) d = \gcd(c,n) d = g cd( c , n ) とする。このとき
c a ≡ c b ( m o d n ) ⟺ a ≡ b ( m o d n / d ) ca \equiv cb \pmod n \iff a \equiv b \pmod{n/d} c a ≡ c b ( mod n ) ⟺ a ≡ b ( mod n / d ) が成り立つ。特に gcd ( c , n ) = 1 \gcd(c,n)=1 g cd( c , n ) = 1 のときに限り、c a ≡ c b ( m o d n ) ca \equiv cb \pmod n c a ≡ c b ( mod n ) から a ≡ b ( m o d n ) a \equiv b \pmod n a ≡ b ( mod n ) が結論できる。
証明(命題 3.6) c = d c ′ c = dc' c = d c ′ 、n = d n ′ n = dn' n = d n ′ と書くと gcd ( c ′ , n ′ ) = 1 \gcd(c', n') = 1 g cd( c ′ , n ′ ) = 1 です(もし e > 1 e > 1 e > 1 が両者の公約数なら d e de d e が c , n c,n c , n の公約数となり d d d の最大性に反します)。
( ⇒ ) (\Rightarrow) ( ⇒ ) c a ≡ c b ( m o d n ) ca \equiv cb \pmod n c a ≡ c b ( mod n ) は n ∣ c ( a − b ) n \mid c(a-b) n ∣ c ( a − b ) 、すなわち d n ′ ∣ d c ′ ( a − b ) dn' \mid dc'(a-b) d n ′ ∣ d c ′ ( a − b ) を意味し、両辺を d d d で割って n ′ ∣ c ′ ( a − b ) n' \mid c'(a-b) n ′ ∣ c ′ ( a − b ) です。gcd ( c ′ , n ′ ) = 1 \gcd(c',n')=1 g cd( c ′ , n ′ ) = 1 なので 補題 2.3 により n ′ ∣ ( a − b ) n' \mid (a-b) n ′ ∣ ( a − b ) 、つまり a ≡ b ( m o d n ′ ) a \equiv b \pmod{n'} a ≡ b ( mod n ′ ) です。
( ⇐ ) (\Leftarrow) ( ⇐ ) n ′ ∣ ( a − b ) n' \mid (a-b) n ′ ∣ ( a − b ) なら n = d n ′ ∣ d c ′ ( a − b ) = c ( a − b ) n = dn' \mid dc'(a-b) = c(a-b) n = d n ′ ∣ d c ′ ( a − b ) = c ( a − b ) なので c a ≡ c b ( m o d n ) ca \equiv cb \pmod n c a ≡ c b ( mod n ) です。
∎
例 3.7 (割り算が壊れる例 )
2 ⋅ 3 = 6 2 \cdot 3 = 6 2 ⋅ 3 = 6 、2 ⋅ 9 = 18 2 \cdot 9 = 18 2 ⋅ 9 = 18 で、18 − 6 = 12 18 - 6 = 12 18 − 6 = 12 なので 2 ⋅ 3 ≡ 2 ⋅ 9 ( m o d 12 ) 2 \cdot 3 \equiv 2 \cdot 9 \pmod{12} 2 ⋅ 3 ≡ 2 ⋅ 9 ( mod 12 ) です。しかし 9 − 3 = 6 9 - 3 = 6 9 − 3 = 6 は 12 12 12 の倍数ではないので 3 ≢ 9 ( m o d 12 ) 3 \not\equiv 9 \pmod{12} 3 ≡ 9 ( mod 12 ) です。命題 3.6 の通り d = gcd ( 2 , 12 ) = 2 d = \gcd(2,12) = 2 d = g cd( 2 , 12 ) = 2 なので、正しく結論できるのは 3 ≡ 9 ( m o d 6 ) 3 \equiv 9 \pmod 6 3 ≡ 9 ( mod 6 ) までです。実際 9 − 3 = 6 9 - 3 = 6 9 − 3 = 6 はこれを満たします。
定義 4.1 (剰余環 )
n ∈ N n \in \mathbb{N} n ∈ N とする。n n n を法とする剰余類全体の集合を
Z / n Z = { [ 0 ] , [ 1 ] , … , [ n − 1 ] } \mathbb{Z}/n\mathbb{Z} = \{[0], [1], \ldots, [n-1]\} Z / n Z = {[ 0 ] , [ 1 ] , … , [ n − 1 ]} と書き、演算を
[ a ] + [ b ] : = [ a + b ] , [ a ] ⋅ [ b ] : = [ a b ] [a] + [b] := [a+b], \qquad [a] \cdot [b] := [ab] [ a ] + [ b ] := [ a + b ] , [ a ] ⋅ [ b ] := [ ab ] で定める。
この定義には確認すべきことがあります。[ a ] [a] [ a ] という記号は同値類であって、代表元 a a a の取り方には自由度があるからです。[ a ] = [ a ′ ] [a] = [a'] [ a ] = [ a ′ ] 、[ b ] = [ b ′ ] [b] = [b'] [ b ] = [ b ′ ] のとき [ a + b ] = [ a ′ + b ′ ] [a+b] = [a'+b'] [ a + b ] = [ a ′ + b ′ ] と [ a b ] = [ a ′ b ′ ] [ab] = [a'b'] [ ab ] = [ a ′ b ′ ] が成り立たなければ、演算は定義されたことになりません。これはまさに 命題 3.3 の主張です。したがって演算は代表元の取り方によらず定まります(商集合の言葉で同じことを述べたものが 定理 5.4[関係と同値関係] です)。
命題 4.2
定義 4.1 の演算により Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z は単位元 [ 1 ] [1] [ 1 ] をもつ可換環になる。
証明(命題 4.2) 結合律、交換律、分配律はすべて Z \mathbb{Z} Z における対応する法則から直ちに従います。例えば分配律は
[ a ] ( [ b ] + [ c ] ) = [ a ] [ b + c ] = [ a ( b + c ) ] = [ a b + a c ] = [ a b ] + [ a c ] = [ a ] [ b ] + [ a ] [ c ] [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 + a c ] = [ ab ] + [ a c ] = [ a ] [ b ] + [ a ] [ c ] であり、3 3 3 番目の等号だけが Z \mathbb{Z} Z の分配律、他は定義の書き換えです。加法の単位元は [ 0 ] [0] [ 0 ] 、[ a ] [a] [ a ] の加法逆元は [ − a ] [-a] [ − a ] 、乗法の単位元は [ 1 ] [1] [ 1 ] です。
∎
環としての一般論は 環と体の基礎 に、Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z をイデアル n Z n\mathbb{Z} n Z による商環と見る視点は イデアルと剰余環 の 定理 4.2[イデアルと剰余環] にあります。
定義 4.3 (単元群 )
環 Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z の元 [ a ] [a] [ a ] が単元であるとは、[ a ] [ b ] = [ 1 ] [a][b] = [1] [ a ] [ b ] = [ 1 ] となる [ b ] [b] [ b ] が存在することをいう。単元全体の集合を ( Z / n Z ) × (\mathbb{Z}/n\mathbb{Z})^{\times} ( Z / n Z ) × と書く。
命題 4.4
[ a ] ∈ Z / n Z [a] \in \mathbb{Z}/n\mathbb{Z} [ a ] ∈ Z / n Z が単元であるための必要十分条件は gcd ( a , n ) = 1 \gcd(a,n) = 1 g cd( a , n ) = 1 である。また ( Z / n Z ) × (\mathbb{Z}/n\mathbb{Z})^{\times} ( Z / n Z ) × は乗法について群をなす。
証明(命題 4.4) ( ⇐ ) (\Leftarrow) ( ⇐ ) gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 とすると 定理 2.2 により a x + n y = 1 ax + ny = 1 a x + n y = 1 となる整数 x , y x,y x , y が取れます。これは a x − 1 = − n y ax - 1 = -ny a x − 1 = − n y 、すなわち a x ≡ 1 ( m o d n ) ax \equiv 1 \pmod n a x ≡ 1 ( mod n ) を意味するので [ a ] [ x ] = [ 1 ] [a][x] = [1] [ a ] [ x ] = [ 1 ] です。
( ⇒ ) (\Rightarrow) ( ⇒ ) [ a ] [ b ] = [ 1 ] [a][b] = [1] [ a ] [ b ] = [ 1 ] とすると a b − 1 = n k ab - 1 = nk ab − 1 = nk となる整数 k k k があり、a b − n k = 1 ab - nk = 1 ab − nk = 1 です。d = gcd ( a , n ) d = \gcd(a,n) d = g cd( a , n ) は左辺の両方の項を割り切るので d ∣ 1 d \mid 1 d ∣ 1 、よって d = 1 d = 1 d = 1 です。
群であることを確かめます。[ 1 ] [1] [ 1 ] は単元です。単元 [ a ] , [ b ] [a],[b] [ a ] , [ b ] の積 [ a b ] [ab] [ ab ] は、[ a ] [ x ] = [ 1 ] [a][x]=[1] [ a ] [ x ] = [ 1 ] 、[ b ] [ y ] = [ 1 ] [b][y]=[1] [ b ] [ y ] = [ 1 ] とすると [ a b ] [ x y ] = [ a ] [ x ] [ b ] [ y ] = [ 1 ] [ab][xy] = [a][x][b][y] = [1] [ ab ] [ x y ] = [ a ] [ x ] [ b ] [ y ] = [ 1 ] なので単元であり、演算は閉じています。結合律は環の乗法から、逆元の存在は単元の定義から従います。
∎
系 4.5
Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z が体であるための必要十分条件は n n n が素数であることである。
証明(系 4.5) n = p n = p n = p を素数とします。[ a ] ≠ [ 0 ] [a] \ne [0] [ a ] = [ 0 ] とは p ∤ a p \nmid a p ∤ a ということで、p p p が素数だから gcd ( a , p ) ∈ { 1 , p } \gcd(a,p) \in \{1,p\} g cd( a , p ) ∈ { 1 , p } のうち p p p は除かれ gcd ( a , p ) = 1 \gcd(a,p)=1 g cd( a , p ) = 1 です。命題 4.4 より [ a ] [a] [ a ] は単元なので、Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z は体です(p ≥ 2 p \ge 2 p ≥ 2 より [ 1 ] ≠ [ 0 ] [1] \ne [0] [ 1 ] = [ 0 ] も満たされます)。
逆に n n n が合成数なら n = a b n = ab n = ab (1 < a , b < n 1 < a, b < n 1 < a , b < n )と書け、[ a ] ≠ [ 0 ] [a] \ne [0] [ a ] = [ 0 ] 、[ b ] ≠ [ 0 ] [b] \ne [0] [ b ] = [ 0 ] でありながら [ a ] [ b ] = [ n ] = [ 0 ] [a][b] = [n] = [0] [ a ] [ b ] = [ n ] = [ 0 ] です。体には零因子がない([ a ] [ b ] = [ 0 ] [a][b]=[0] [ a ] [ b ] = [ 0 ] かつ [ a ] [a] [ a ] が可逆なら両辺に [ a ] − 1 [a]^{-1} [ a ] − 1 を掛けて [ b ] = [ 0 ] [b]=[0] [ b ] = [ 0 ] )ので、これは体ではありません。n = 1 n = 1 n = 1 のときは [ 1 ] = [ 0 ] [1]=[0] [ 1 ] = [ 0 ] なので体の定義を満たしません。
∎
素数 p p p に対する体 Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z を F p \mathbb{F}_p F p と書きます。系 4.5 は、素数が「割り算のできる有限世界」を作る唯一の法であることを言っています。素数の特別さがここで代数的な形をとります。同じ主張は環論の側からも 系 5.5[環と体の基礎] として得られます。
定義 4.6 (オイラーのトーシェント関数 )
n ∈ N n \in \mathbb{N} n ∈ 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\} φ ( n ) := # { a ∈ Z ∣ 1 ≤ a ≤ n , g cd( a , n ) = 1 } と定める。命題 4.4 により φ ( n ) = # ( Z / n Z ) × \varphi(n) = \#(\mathbb{Z}/n\mathbb{Z})^{\times} φ ( n ) = # ( Z / n Z ) × である。
例 4.7 (Z/12Z の単元群 )
1 1 1 から 12 12 12 までで 12 12 12 と互いに素なものは 1 , 5 , 7 , 11 1, 5, 7, 11 1 , 5 , 7 , 11 の 4 4 4 個なので φ ( 12 ) = 4 \varphi(12)=4 φ ( 12 ) = 4 、( Z / 12 Z ) × = { [ 1 ] , [ 5 ] , [ 7 ] , [ 11 ] } (\mathbb{Z}/12\mathbb{Z})^{\times} = \{[1],[5],[7],[11]\} ( Z /12 Z ) × = {[ 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] [ 5 ] 2 = [ 25 ] = [ 1 ] , [ 7 ] 2 = [ 49 ] = [ 1 ] , [ 11 ] 2 = [ 121 ] = [ 1 ] , [ 5 ] [ 7 ] = [ 35 ] = [ 11 ] となり、単位元以外のすべての元が位数 2 2 2 です。したがってこの群はクラインの四元群 Z / 2 Z × Z / 2 Z \mathbb{Z}/2\mathbb{Z} \times \mathbb{Z}/2\mathbb{Z} Z /2 Z × Z /2 Z と同型で、巡回群ではありません。一方 p p p が素数のとき ( Z / p Z ) × (\mathbb{Z}/p\mathbb{Z})^{\times} ( Z / p Z ) × は必ず巡回群になることが知られています(原始根の存在)。
定理 4.8 (中国剰余定理 )
m , n ∈ N m, n \in \mathbb{N} m , n ∈ N が gcd ( m , n ) = 1 \gcd(m,n)=1 g cd( m , n ) = 1 を満たすとする。このとき写像
Φ : Z / m n Z ⟶ Z / m Z × Z / n Z , [ a ] m n ⟼ ( [ 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) Φ : Z / mn Z ⟶ Z / m Z × Z / n Z , [ a ] mn ⟼ ([ a ] m , [ a ] n ) は well-defined な環同型である。特に任意の整数 r , s r, s r , s に対し連立合同式 x ≡ r ( m o d m ) x \equiv r \pmod m x ≡ r ( mod m ) , x ≡ s ( m o d n ) x \equiv s \pmod n x ≡ s ( mod n ) は m n mn mn を法として一意な解をもつ。
証明(定理 4.8) well-defined 性: [ a ] m n = [ a ′ ] m n [a]_{mn} = [a']_{mn} [ a ] mn = [ a ′ ] mn なら m n ∣ ( a − a ′ ) mn \mid (a-a') mn ∣ ( a − a ′ ) なので特に m ∣ ( a − a ′ ) m \mid (a-a') m ∣ ( a − a ′ ) 、n ∣ ( a − a ′ ) n \mid (a-a') n ∣ ( a − a ′ ) であり、( [ a ] m , [ a ] n ) = ( [ a ′ ] m , [ a ′ ] n ) ([a]_m,[a]_n) = ([a']_m,[a']_n) ([ a ] m , [ a ] n ) = ([ a ′ ] m , [ a ′ ] n ) です。環準同型であることは、両成分での加法と乗法がともに 定義 4.1 の演算に一致することから直ちに従います。Φ ( [ 1 ] m n ) = ( [ 1 ] m , [ 1 ] n ) \Phi([1]_{mn}) = ([1]_m,[1]_n) Φ ([ 1 ] mn ) = ([ 1 ] m , [ 1 ] n ) も明らかです。
単射性: Φ ( [ a ] m n ) = ( [ 0 ] m , [ 0 ] n ) \Phi([a]_{mn}) = ([0]_m,[0]_n) Φ ([ a ] mn ) = ([ 0 ] m , [ 0 ] n ) とすると m ∣ a m \mid a m ∣ a かつ n ∣ a n \mid a n ∣ a です。a = m k a = mk a = mk と書くと n ∣ m k n \mid mk n ∣ mk で、gcd ( n , m ) = 1 \gcd(n,m)=1 g cd( n , m ) = 1 なので 補題 2.3 により n ∣ k n \mid k n ∣ k 、すなわち k = n l k = nl k = n l です。よって a = m n l a = mnl a = mn l 、つまり [ a ] m n = [ 0 ] m n [a]_{mn} = [0]_{mn} [ a ] mn = [ 0 ] mn です。準同型の核が 0 0 0 だけなので Φ \Phi Φ は単射です。
全射性: 定義域と値域はともに有限集合で、要素数はそれぞれ m n mn mn と m ⋅ n m \cdot n m ⋅ n で等しくなります。単射な写像が有限の等濃度集合の間にあれば全射なので、Φ \Phi Φ は全単射です。
最後の主張は Φ \Phi Φ の全単射性そのものです。( [ r ] m , [ s ] n ) ([r]_m,[s]_n) ([ r ] m , [ s ] n ) の逆像がちょうど一つの剰余類 [ x ] m n [x]_{mn} [ x ] mn であることが、解の存在と m n mn mn を法とする一意性を意味します。
∎
系 4.9
gcd ( m , n ) = 1 \gcd(m,n)=1 g cd( m , n ) = 1 ならば φ ( m n ) = φ ( m ) φ ( n ) \varphi(mn) = \varphi(m)\varphi(n) φ ( mn ) = φ ( m ) φ ( n ) である。さらに n = p 1 e 1 ⋯ p k e k n = p_1^{e_1}\cdots p_k^{e_k} n = p 1 e 1 ⋯ p k e k を素因数分解とすると
φ ( n ) = n ∏ i = 1 k ( 1 − 1 p i ) . \varphi(n) = n \prod_{i=1}^{k}\left(1 - \frac{1}{p_i}\right). φ ( n ) = n i = 1 ∏ k ( 1 − p i 1 ) .
証明(系 4.9) 環同型は単元を単元に、非単元を非単元に写します(Φ ( u ) Φ ( u − 1 ) = Φ ( 1 ) = 1 \Phi(u)\Phi(u^{-1}) = \Phi(1) = 1 Φ ( u ) Φ ( u − 1 ) = Φ ( 1 ) = 1 、逆向きも Φ − 1 \Phi^{-1} Φ − 1 について同様)。したがって 定理 4.8 の Φ \Phi Φ は単元群の間の全単射
( Z / m n Z ) × → ∼ ( Z / m Z ) × × ( Z / n Z ) × (\mathbb{Z}/mn\mathbb{Z})^{\times} \xrightarrow{\ \sim\ } (\mathbb{Z}/m\mathbb{Z})^{\times} \times (\mathbb{Z}/n\mathbb{Z})^{\times} ( Z / mn Z ) × ∼ ( Z / m Z ) × × ( Z / n Z ) × を誘導します。両辺の要素数を数えれば φ ( m n ) = φ ( m ) φ ( n ) \varphi(mn)=\varphi(m)\varphi(n) φ ( mn ) = φ ( m ) φ ( n ) です。
素数べき p e p^e p e については、1 1 1 から p e p^e p e までの整数のうち p e p^e p e と互いに素でないものは p p p の倍数、すなわち p , 2 p , … , p e − 1 ⋅ p p, 2p, \ldots, p^{e-1}\cdot p p , 2 p , … , p e − 1 ⋅ p の p e − 1 p^{e-1} p e − 1 個です。よって
φ ( p e ) = p e − p e − 1 = p e ( 1 − 1 p ) . \varphi(p^e) = p^e - p^{e-1} = p^e\left(1 - \frac{1}{p}\right). φ ( p e ) = p e − p e − 1 = p e ( 1 − p 1 ) . 異なる素数べきは互いに素なので乗法性を繰り返し使えば公式を得ます。
∎
フェルマーは 1640 年、フレニクル宛の書簡でこの定理を述べましたが「証明は長くなるので書かない」として省略しました。最初に公表された証明はオイラーによるもの(1736)です。
定理 5.1 (フェルマーの小定理 )
p p p を素数、a a a を p ∤ a p \nmid a p ∤ a である整数とする。このとき
a p − 1 ≡ 1 ( m o d p ) . a^{p-1} \equiv 1 \pmod p . a p − 1 ≡ 1 ( mod p ) .
証明(定理 5.1) S = { 1 , 2 , … , p − 1 } S = \{1, 2, \ldots, p-1\} S = { 1 , 2 , … , p − 1 } とし、写像 σ \sigma σ を「x ∈ S x \in S x ∈ S に a x m o d p ax \bmod p a x mod p を対応させる」ものとして定めます。三段階で示します。
第一段階(σ \sigma σ の値が S S S に入ること)。1 ≤ x ≤ p − 1 1 \le x \le p-1 1 ≤ x ≤ p − 1 と p ∤ a p \nmid a p ∤ a から、補題 2.3 の後半により p ∤ a x p \nmid ax p ∤ a x です。よって a x m o d p ≠ 0 ax \bmod p \ne 0 a x mod p = 0 、すなわち σ ( x ) ∈ S \sigma(x) \in S σ ( x ) ∈ S です。
第二段階(σ \sigma σ が単射であること)。σ ( x ) = σ ( y ) \sigma(x) = \sigma(y) σ ( x ) = σ ( y ) とすると a x ≡ a y ( m o d p ) ax \equiv ay \pmod p a x ≡ a y ( mod p ) です。p ∤ a p \nmid a p ∤ a より gcd ( a , p ) = 1 \gcd(a,p)=1 g cd( a , p ) = 1 なので、命題 3.6 を c = a c=a c = a , n = p n=p n = p , d = 1 d=1 d = 1 として適用すると x ≡ y ( m o d p ) x \equiv y \pmod p x ≡ y ( mod p ) を得ます。x , y x,y x , y はともに 1 1 1 以上 p − 1 p-1 p − 1 以下なので ∣ x − y ∣ < p |x-y| < p ∣ x − y ∣ < p であり、x = y x = y x = y です。有限集合 S S S から自身への単射は全単射なので、σ \sigma σ は S S S の置換です。
第三段階(積の比較)。σ \sigma σ が置換であることから
∏ x ∈ S σ ( x ) = ∏ x ∈ S x = ( p − 1 ) ! . \prod_{x \in S} \sigma(x) = \prod_{x \in S} x = (p-1)! . x ∈ S ∏ σ ( x ) = x ∈ S ∏ x = ( p − 1 )! . 一方、各 x x x について σ ( x ) ≡ a x ( m o d p ) \sigma(x) \equiv ax \pmod p σ ( x ) ≡ a x ( mod p ) なので、命題 3.3 を p − 1 p-1 p − 1 回使って
∏ x ∈ S σ ( x ) ≡ ∏ x ∈ S ( a x ) = a p − 1 ( p − 1 ) ! ( m o d p ) . \prod_{x \in S}\sigma(x) \equiv \prod_{x\in S} (ax) = a^{p-1}(p-1)! \pmod p . x ∈ S ∏ σ ( x ) ≡ x ∈ S ∏ ( a x ) = a p − 1 ( p − 1 )! ( mod p ) . 両者を合わせると a p − 1 ( p − 1 ) ! ≡ ( p − 1 ) ! ( m o d p ) a^{p-1}(p-1)! \equiv (p-1)! \pmod p a p − 1 ( p − 1 )! ≡ ( p − 1 )! ( mod p ) です。1 ≤ x ≤ p − 1 1 \le x \le p-1 1 ≤ x ≤ p − 1 の各 x x x は p p p で割り切れないので、補題 2.3 を繰り返して p ∤ ( p − 1 ) ! p \nmid (p-1)! p ∤ ( p − 1 )! 、すなわち gcd ( ( p − 1 ) ! , p ) = 1 \gcd((p-1)!,p)=1 g cd(( p − 1 )! , p ) = 1 です。よって 命題 3.6 により ( p − 1 ) ! (p-1)! ( p − 1 )! を消去でき、a p − 1 ≡ 1 ( m o d p ) a^{p-1} \equiv 1 \pmod p a p − 1 ≡ 1 ( mod p ) を得ます。
∎
系 5.2
p p p を素数とすると、すべての整数 a a a に対して a p ≡ a ( m o d p ) a^{p} \equiv a \pmod p a p ≡ a ( mod p ) が成り立つ。
証明(系 5.2) p ∤ a p \nmid a p ∤ a のときは 定理 5.1 の両辺に a a a を掛ければ a p ≡ a ( m o d p ) a^p \equiv a \pmod p a p ≡ a ( mod p ) です。p ∣ a p \mid a p ∣ a のときは a ≡ 0 ( m o d p ) a \equiv 0 \pmod p a ≡ 0 ( mod p ) なので 命題 3.3 により a p ≡ 0 p = 0 ≡ a ( m o d p ) a^p \equiv 0^p = 0 \equiv a \pmod p a p ≡ 0 p = 0 ≡ a ( mod p ) です。どちらの場合も成り立ちます。
∎
系 5.2 の形は a a a に条件が付かないので使い勝手がよく、後で RSA の正当性を示すときに効きます。
定理 5.3 (オイラーの定理 )
n ∈ N n \in \mathbb{N} n ∈ N 、a ∈ Z a \in \mathbb{Z} a ∈ Z が gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 を満たすとする。このとき
a φ ( n ) ≡ 1 ( m o d n ) . a^{\varphi(n)} \equiv 1 \pmod n . a φ ( n ) ≡ 1 ( mod n ) .
証明(定理 5.3) 定理 5.1 の証明をそのまま持ち上げます。U = ( Z / n Z ) × U = (\mathbb{Z}/n\mathbb{Z})^{\times} U = ( Z / n Z ) × とおき、# U = φ ( n ) \#U = \varphi(n) # U = φ ( n ) です(定義 4.6 )。gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 なので 命題 4.4 より [ a ] ∈ U [a] \in U [ a ] ∈ U です。
写像 μ [ a ] : U → U \mu_{[a]} : U \to U μ [ a ] : U → U , [ x ] ↦ [ a ] [ x ] [x] \mapsto [a][x] [ x ] ↦ [ a ] [ x ] を考えます。U U U が群であること(命題 4.4 )から [ a ] [ x ] ∈ U [a][x] \in U [ a ] [ x ] ∈ U であり、μ [ a ] \mu_{[a]} μ [ a ] は U U U から U U U への写像です。また μ [ a ] − 1 \mu_{[a]^{-1}} μ [ a ] − 1 が逆写像を与えるので μ [ a ] \mu_{[a]} μ [ a ] は全単射、すなわち U U U の置換です。
そこで U U U の全元の積 P = ∏ [ x ] ∈ U [ x ] P = \prod_{[x]\in U}[x] P = ∏ [ x ] ∈ 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 . P = [ x ] ∈ U ∏ μ [ a ] ([ x ]) = [ x ] ∈ U ∏ [ a ] [ x ] = [ a ] φ ( n ) P . P P P は単元の積なので単元であり(命題 4.4 の群の性質)、両辺に P − 1 P^{-1} P − 1 を掛けて [ a ] φ ( n ) = [ 1 ] [a]^{\varphi(n)} = [1] [ a ] φ ( n ) = [ 1 ] 、すなわち a φ ( n ) ≡ 1 ( m o d n ) a^{\varphi(n)} \equiv 1 \pmod n a φ ( n ) ≡ 1 ( mod n ) です。
∎
証明(命題 5.5) p ≥ 2 p \ge 2 p ≥ 2 より p − 2 ≥ 0 p - 2 \ge 0 p − 2 ≥ 0 なので a p − 2 a^{p-2} a p − 2 は整数です。定理 5.1 により
[ a ] ⋅ [ a p − 2 ] = [ a p − 1 ] = [ 1 ] [a] \cdot [a^{p-2}] = [a^{p-1}] = [1] [ a ] ⋅ [ a p − 2 ] = [ a p − 1 ] = [ 1 ] です。逆元は一意なので(群の一般論、あるいは [ b ] , [ b ′ ] [b],[b'] [ b ] , [ b ′ ] がともに逆元なら [ b ] = [ b ] [ a ] [ b ′ ] = [ b ′ ] [b] = [b][a][b'] = [b'] [ b ] = [ b ] [ a ] [ b ′ ] = [ b ′ ] )、これが [ a ] − 1 [a]^{-1} [ a ] − 1 です。
∎
例 5.6 (3 の 1000 乗を 7 で割った余り )
7 7 7 は素数で 7 ∤ 3 7 \nmid 3 7 ∤ 3 なので、定理 5.1 により 3 6 ≡ 1 ( m o d 7 ) 3^6 \equiv 1 \pmod 7 3 6 ≡ 1 ( mod 7 ) です。1000 = 6 ⋅ 166 + 4 1000 = 6 \cdot 166 + 4 1000 = 6 ⋅ 166 + 4 なので
3 1000 = ( 3 6 ) 166 ⋅ 3 4 ≡ 1 166 ⋅ 3 4 = 81 ( m o d 7 ) . 3^{1000} = (3^{6})^{166} \cdot 3^{4} \equiv 1^{166}\cdot 3^4 = 81 \pmod 7 . 3 1000 = ( 3 6 ) 166 ⋅ 3 4 ≡ 1 166 ⋅ 3 4 = 81 ( mod 7 ) . 81 = 7 ⋅ 11 + 4 81 = 7\cdot 11 + 4 81 = 7 ⋅ 11 + 4 なので 3 1000 ≡ 4 ( m o d 7 ) 3^{1000} \equiv 4 \pmod 7 3 1000 ≡ 4 ( mod 7 ) です。指数を φ ( 7 ) = 6 \varphi(7)=6 φ ( 7 ) = 6 で割った余りに置き換えられる、というのが小定理の実用的な使い方です。
a e m o d n a^e \bmod n a e mod n を計算するのに e e e 回の掛け算は要りません。e e e を 2 2 2 進展開し、a , a 2 , a 4 , … a, a^2, a^4, \ldots a , a 2 , a 4 , … を順に二乗しながら必要なものだけ掛ければ、掛け算は O ( log e ) O(\log e) O ( log e ) 回で済みます。各段で m o d n \bmod\ n mod n を取るので、途中の数が n 2 n^2 n 2 を超えることもありません(根拠は 命題 3.3 )。
""" a^e mod n を繰り返し二乗法で計算する。e >= 0, n >= 1。 """
assert power_mod ( 2 , 100 , 100 ) == 76 # 2^100 の下 2 桁
assert power_mod ( 3 , 1000 , 7 ) == 4 # 3^1000 を 7 で割った余り
逆元の計算には 定理 2.2 の証明を手続きに直した拡張ユークリッドの互除法を使います。
""" (g, x, y) を返す。g = gcd(a, b) かつ a*x + b*y = g。 """
g, x, y = ext_gcd ( b , a % b )
return (g, y, x - (a // b) * y)
g, x, _ = ext_gcd ( a % n , n )
raise ValueError ( " 逆元が存在しません " )
assert inverse_mod ( 7 , 120 ) == 103
定理 6.1 (RSA の正当性 )
p ≠ q p \ne q p = q を素数とし、n = p q n = pq n = pq 、φ ( n ) = ( p − 1 ) ( q − 1 ) \varphi(n) = (p-1)(q-1) φ ( n ) = ( p − 1 ) ( q − 1 ) とする。整数 e , d e, d e , d が
e d ≡ 1 ( m o d φ ( n ) ) , gcd ( e , φ ( n ) ) = 1 ed \equiv 1 \pmod{\varphi(n)}, \qquad \gcd(e,\varphi(n)) = 1 e d ≡ 1 ( mod φ ( n )) , g cd( e , φ ( n )) = 1 を満たすとする。このときすべての 整数 m m m に対して
( m e ) d ≡ m ( m o d n ) (m^{e})^{d} \equiv m \pmod n ( m e ) d ≡ m ( mod n ) が成り立つ。
証明(定理 6.1) 仮定より e d = 1 + k φ ( n ) = 1 + k ( p − 1 ) ( q − 1 ) ed = 1 + k\varphi(n) = 1 + k(p-1)(q-1) e d = 1 + k φ ( n ) = 1 + k ( p − 1 ) ( q − 1 ) となる整数 k ≥ 0 k \ge 0 k ≥ 0 が取れます(e d ≥ 1 ed \ge 1 e d ≥ 1 としてよい)。
まず m e d ≡ m ( m o d p ) m^{ed} \equiv m \pmod p m e d ≡ m ( mod p ) を示します。p ∣ m p \mid m p ∣ m の場合は両辺とも 0 0 0 と合同なので成り立ちます。p ∤ m p \nmid m p ∤ m の場合、定理 5.1 により m p − 1 ≡ 1 ( m o d p ) m^{p-1}\equiv 1 \pmod p m p − 1 ≡ 1 ( mod p ) なので
m e d = m ⋅ ( m p − 1 ) k ( q − 1 ) ≡ m ⋅ 1 k ( q − 1 ) = m ( m o d p ) . m^{ed} = m \cdot \left(m^{p-1}\right)^{k(q-1)} \equiv m \cdot 1^{k(q-1)} = m \pmod p . m e d = m ⋅ ( m p − 1 ) k ( q − 1 ) ≡ m ⋅ 1 k ( q − 1 ) = m ( mod p ) . ここで 命題 3.3 のべき乗と乗法の性質を使いました。p p p と q q q を入れ替えれば同じ議論で m e d ≡ m ( m o d q ) m^{ed}\equiv m \pmod q m e d ≡ m ( mod q ) も出ます。
したがって p ∣ ( m e d − m ) p \mid (m^{ed}-m) p ∣ ( m e d − m ) かつ q ∣ ( m e d − m ) q \mid (m^{ed}-m) q ∣ ( m e d − m ) です。p ≠ q p \ne q p = q はともに素数なので gcd ( p , q ) = 1 \gcd(p,q)=1 g cd( p , q ) = 1 であり、定理 4.8 の単射性の議論(あるいは 補題 2.3 を直接)により p q ∣ ( m e d − m ) pq \mid (m^{ed}-m) pq ∣ ( m e d − m ) 、すなわち m e d ≡ m ( m o d n ) m^{ed}\equiv m \pmod n m e d ≡ m ( mod n ) です。
gcd ( m , n ) = 1 \gcd(m,n)=1 g cd( m , n ) = 1 を仮定していない点が重要です。定理 5.3 をそのまま使うとこの仮定が要りますが、素因数ごとに分けて 系 5.2 の形を使えば仮定なしで済みます。
∎
flowchart TD
A["素数 p, q を選ぶ"] --> B["n = pq, phi = (p-1)(q-1)"]
B --> C["e を選ぶ (gcd(e, phi) = 1)"]
C --> D["d = e^-1 mod phi を拡張ユークリッドで求める"]
D --> E["公開鍵 (n, e)"]
D --> F["秘密鍵 (n, d)"]
E --> G["暗号化 c = m^e mod n"]
G --> H["復号 m = c^d mod n"]
F --> H RSA の鍵生成と暗号化・復号の流れ。安全性は n から p, q を復元する困難さに依存する。
例 6.2 (小さな鍵で RSA を最後まで計算する )
p = 11 p = 11 p = 11 , q = 13 q = 13 q = 13 とすると n = 143 n = 143 n = 143 、φ ( n ) = 10 ⋅ 12 = 120 \varphi(n) = 10 \cdot 12 = 120 φ ( n ) = 10 ⋅ 12 = 120 です。e = 7 e = 7 e = 7 は gcd ( 7 , 120 ) = 1 \gcd(7,120)=1 g cd( 7 , 120 ) = 1 を満たします。d d d は 7 d ≡ 1 ( m o d 120 ) 7d \equiv 1 \pmod{120} 7 d ≡ 1 ( mod 120 ) の解で、7 ⋅ 103 = 721 = 6 ⋅ 120 + 1 7 \cdot 103 = 721 = 6\cdot 120 + 1 7 ⋅ 103 = 721 = 6 ⋅ 120 + 1 より d = 103 d = 103 d = 103 です。
平文 m = 5 m = 5 m = 5 を暗号化します。
5 2 = 25 , 5 4 ≡ 25 2 = 625 = 4 ⋅ 143 + 53 ≡ 53 ( m o d 143 ) , 5^2 = 25,\quad 5^4 \equiv 25^2 = 625 = 4\cdot 143 + 53 \equiv 53 \pmod{143}, 5 2 = 25 , 5 4 ≡ 2 5 2 = 625 = 4 ⋅ 143 + 53 ≡ 53 ( mod 143 ) , c = 5 7 = 5 4 ⋅ 5 2 ⋅ 5 ≡ 53 ⋅ 25 ⋅ 5 ( m o d 143 ) . c = 5^7 = 5^4\cdot 5^2 \cdot 5 \equiv 53 \cdot 25 \cdot 5 \pmod{143}. c = 5 7 = 5 4 ⋅ 5 2 ⋅ 5 ≡ 53 ⋅ 25 ⋅ 5 ( mod 143 ) . 53 ⋅ 25 = 1325 = 9 ⋅ 143 + 38 ≡ 38 53\cdot 25 = 1325 = 9\cdot 143 + 38 \equiv 38 53 ⋅ 25 = 1325 = 9 ⋅ 143 + 38 ≡ 38 、38 ⋅ 5 = 190 = 143 + 47 ≡ 47 38 \cdot 5 = 190 = 143 + 47 \equiv 47 38 ⋅ 5 = 190 = 143 + 47 ≡ 47 なので c = 47 c = 47 c = 47 です。
復号します。47 103 m o d 143 47^{103} \bmod 143 4 7 103 mod 143 を直接計算する代わりに 定理 4.8 を使い、法 11 11 11 と法 13 13 13 に分けます。
法 11 11 11 : 47 = 4 ⋅ 11 + 3 ≡ 3 47 = 4\cdot 11 + 3 \equiv 3 47 = 4 ⋅ 11 + 3 ≡ 3 であり、定理 5.1 より 3 10 ≡ 1 ( m o d 11 ) 3^{10}\equiv 1 \pmod{11} 3 10 ≡ 1 ( mod 11 ) 、103 = 10 ⋅ 10 + 3 103 = 10\cdot 10 + 3 103 = 10 ⋅ 10 + 3 なので 47 103 ≡ 3 3 = 27 ≡ 5 ( m o d 11 ) 47^{103} \equiv 3^{3} = 27 \equiv 5 \pmod{11} 4 7 103 ≡ 3 3 = 27 ≡ 5 ( mod 11 ) 。
法 13 13 13 : 47 = 3 ⋅ 13 + 8 ≡ 8 47 = 3\cdot 13 + 8 \equiv 8 47 = 3 ⋅ 13 + 8 ≡ 8 、8 12 ≡ 1 ( m o d 13 ) 8^{12}\equiv 1 \pmod{13} 8 12 ≡ 1 ( mod 13 ) 、103 = 12 ⋅ 8 + 7 103 = 12\cdot 8 + 7 103 = 12 ⋅ 8 + 7 なので 47 103 ≡ 8 7 ( m o d 13 ) 47^{103}\equiv 8^{7} \pmod{13} 4 7 103 ≡ 8 7 ( mod 13 ) 。ここで 8 2 = 64 = 4 ⋅ 13 + 12 ≡ − 1 8^2 = 64 = 4\cdot 13 + 12 \equiv -1 8 2 = 64 = 4 ⋅ 13 + 12 ≡ − 1 なので 8 7 = ( 8 2 ) 3 ⋅ 8 ≡ ( − 1 ) 3 ⋅ 8 = − 8 ≡ 5 ( m o d 13 ) 8^7 = (8^2)^3 \cdot 8 \equiv (-1)^3\cdot 8 = -8 \equiv 5 \pmod{13} 8 7 = ( 8 2 ) 3 ⋅ 8 ≡ ( − 1 ) 3 ⋅ 8 = − 8 ≡ 5 ( mod 13 ) 。
x ≡ 5 ( m o d 11 ) x \equiv 5 \pmod{11} x ≡ 5 ( mod 11 ) かつ x ≡ 5 ( m o d 13 ) x \equiv 5 \pmod{13} x ≡ 5 ( mod 13 ) を満たす 143 143 143 を法とする唯一の解は x = 5 x = 5 x = 5 です。確かに平文 m = 5 m=5 m = 5 が復元されました。
注意
実際の RSA では p , q p, q p , q は数百桁の素数を使い、平文はそのまま数に直すのではなくパディング方式(OAEP など)で加工します。教科書通りの「素朴 RSA」は、同じ平文が常に同じ暗号文になる、小さい e e e と短い平文で m e m^e m e が n n n を超えず整数べき根で解けるなど、実用には致命的な弱点をもちます。
系 5.2 の対偶は素数判定に使えます。ある a a a について a n − 1 ≢ 1 ( m o d n ) a^{n-1}\not\equiv 1 \pmod n a n − 1 ≡ 1 ( mod n ) (かつ gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 )なら n n n は素数ではありません。この判定は繰り返し二乗法で高速に実行できます。
問題は逆です。a n − 1 ≡ 1 ( m o d n ) a^{n-1}\equiv 1 \pmod n a n − 1 ≡ 1 ( mod n ) が成り立ったからといって n n n が素数とは限りません。
定義 6.3 (カーマイケル数 )
合成数 n n n が、gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 を満たすすべての整数 a a a に対して a n − 1 ≡ 1 ( m o d n ) a^{n-1}\equiv 1 \pmod n a n − 1 ≡ 1 ( mod n ) を満たすとき、n n n をカーマイケル数という。
例 6.4 (561 はカーマイケル数 )
561 = 3 ⋅ 11 ⋅ 17 561 = 3\cdot 11\cdot 17 561 = 3 ⋅ 11 ⋅ 17 で合成数です。560 560 560 は 2 , 10 , 16 2, 10, 16 2 , 10 , 16 のいずれでも割り切れます(560 = 2 ⋅ 280 = 10 ⋅ 56 = 16 ⋅ 35 560 = 2\cdot 280 = 10\cdot 56 = 16\cdot 35 560 = 2 ⋅ 280 = 10 ⋅ 56 = 16 ⋅ 35 )。gcd ( a , 561 ) = 1 \gcd(a,561)=1 g cd( a , 561 ) = 1 とすると a a a は 3 , 11 , 17 3, 11, 17 3 , 11 , 17 のいずれでも割り切れないので、定理 5.1 より
a 2 ≡ 1 ( m o d 3 ) , a 10 ≡ 1 ( m o d 11 ) , a 16 ≡ 1 ( m o d 17 ) . a^{2}\equiv 1 \pmod 3, \qquad a^{10}\equiv 1\pmod{11}, \qquad a^{16}\equiv 1 \pmod{17}. a 2 ≡ 1 ( mod 3 ) , a 10 ≡ 1 ( mod 11 ) , a 16 ≡ 1 ( mod 17 ) . 560 560 560 がこれらの指数の倍数なので、a 560 = ( a 2 ) 280 ≡ 1 ( m o d 3 ) a^{560} = (a^{2})^{280} \equiv 1 \pmod 3 a 560 = ( a 2 ) 280 ≡ 1 ( mod 3 ) などが成り立ち、三つの素数すべてを法として a 560 ≡ 1 a^{560}\equiv 1 a 560 ≡ 1 です。定理 4.8 を二回使えば 561 ∣ ( a 560 − 1 ) 561 \mid (a^{560}-1) 561 ∣ ( a 560 − 1 ) 、すなわち a 560 ≡ 1 ( m o d 561 ) a^{560}\equiv 1 \pmod{561} a 560 ≡ 1 ( mod 561 ) を得ます。
561 561 561 は最小のカーマイケル数です。1994 年に Alford, Granville, Pomerance がカーマイケル数は無限に存在することを証明しました。
したがってフェルマー判定は決定的な素数判定にはなりません。この欠陥を補うのがミラー・ラビン判定で、n − 1 = 2 s t n-1 = 2^{s}t n − 1 = 2 s t (t t t は奇数)と書いて a t , a 2 t , … a^{t}, a^{2t},\ldots a t , a 2 t , … の列を見ることで「1 1 1 の自明でない平方根」の出現を検出します。Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z が体(系 4.5 )なら x 2 = 1 x^2 = 1 x 2 = 1 の解は ± 1 \pm 1 ± 1 に限る、という事実が原理です。合成数がミラー・ラビン判定をすり抜ける確率は各底について 1 / 4 1/4 1/4 以下なので、底をいくつも取れば実用上は十分な確実性が得られます。
演習 7.1 易
7 2026 7^{2026} 7 2026 の一の位の数字を求めてください。
解答 一の位は 10 10 10 を法とする剰余です。gcd ( 7 , 10 ) = 1 \gcd(7,10)=1 g cd( 7 , 10 ) = 1 で φ ( 10 ) = φ ( 2 ) φ ( 5 ) = 1 ⋅ 4 = 4 \varphi(10)=\varphi(2)\varphi(5)=1\cdot 4=4 φ ( 10 ) = φ ( 2 ) φ ( 5 ) = 1 ⋅ 4 = 4 (系 4.9 )なので、定理 5.3 により 7 4 ≡ 1 ( m o d 10 ) 7^{4}\equiv 1 \pmod{10} 7 4 ≡ 1 ( mod 10 ) です。2026 = 4 ⋅ 506 + 2 2026 = 4\cdot 506 + 2 2026 = 4 ⋅ 506 + 2 なので
7 2026 = ( 7 4 ) 506 ⋅ 7 2 ≡ 1 506 ⋅ 49 ≡ 9 ( m o d 10 ) . 7^{2026} = (7^{4})^{506}\cdot 7^{2} \equiv 1^{506}\cdot 49 \equiv 9 \pmod{10}. 7 2026 = ( 7 4 ) 506 ⋅ 7 2 ≡ 1 506 ⋅ 49 ≡ 9 ( mod 10 ) . よって一の位は 9 9 9 です。
演習 7.2 標準
p p p を素数とするとき ( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)! \equiv -1 \pmod p ( p − 1 )! ≡ − 1 ( mod p ) (ウィルソンの定理)を証明してください。
解答 p = 2 p = 2 p = 2 のときは 1 ! = 1 ≡ − 1 ( m o d 2 ) 1! = 1 \equiv -1 \pmod 2 1 ! = 1 ≡ − 1 ( mod 2 ) で成り立つので、以下 p p p は奇素数とします。
Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z は体なので(系 4.5 )、[ 1 ] , … , [ p − 1 ] [1],\ldots,[p-1] [ 1 ] , … , [ p − 1 ] はすべて可逆です。まず自分自身が逆元になる元を決定します。[ x ] 2 = [ 1 ] [x]^2=[1] [ x ] 2 = [ 1 ] は p ∣ ( x − 1 ) ( x + 1 ) p \mid (x-1)(x+1) p ∣ ( x − 1 ) ( x + 1 ) と同値で、補題 2.3 により p ∣ ( x − 1 ) p \mid (x-1) p ∣ ( x − 1 ) または p ∣ ( x + 1 ) p \mid (x+1) p ∣ ( x + 1 ) 、すなわち x ≡ 1 x \equiv 1 x ≡ 1 または x ≡ − 1 ( m o d p ) x\equiv -1 \pmod p x ≡ − 1 ( mod p ) です。p p p が奇素数なら 1 ≢ − 1 1 \not\equiv -1 1 ≡ − 1 なので、自己逆元は [ 1 ] [1] [ 1 ] と [ p − 1 ] [p-1] [ p − 1 ] の二つちょうどです。
残りの p − 3 p-3 p − 3 個の元は、[ x ] [x] [ x ] と [ x ] − 1 [x]^{-1} [ x ] − 1 の相異なる二元の組に分割されます(逆元の一意性より、この対応は矛盾なく組を作ります)。各組の積は [ 1 ] [1] [ 1 ] なので
( p − 1 ) ! = ∏ x = 1 p − 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 )! = x = 1 ∏ p − 1 [ x ] = [ 1 ] ⋅ [ p − 1 ] ⋅ 組 ∏ [ 1 ] = [ p − 1 ] = [ − 1 ] . よって ( p − 1 ) ! ≡ − 1 ( m o d p ) (p-1)!\equiv -1 \pmod p ( p − 1 )! ≡ − 1 ( mod p ) です。
演習 7.3 標準
341 = 11 ⋅ 31 341 = 11\cdot 31 341 = 11 ⋅ 31 について、2 340 ≡ 1 ( m o d 341 ) 2^{340}\equiv 1 \pmod{341} 2 340 ≡ 1 ( mod 341 ) を示してください(341 341 341 は底 2 2 2 に関するフェルマー擬素数です)。また 3 340 m o d 341 3^{340} \bmod 341 3 340 mod 341 を計算し、底 3 3 3 では合成数と判定されることを確かめてください。
解答 底 2 2 2 : 2 10 = 1024 = 93 ⋅ 11 + 1 2^{10}=1024 = 93\cdot 11 + 1 2 10 = 1024 = 93 ⋅ 11 + 1 なので 2 10 ≡ 1 ( m o d 11 ) 2^{10}\equiv 1 \pmod{11} 2 10 ≡ 1 ( mod 11 ) であり、340 = 10 ⋅ 34 340 = 10\cdot 34 340 = 10 ⋅ 34 より 2 340 ≡ 1 ( m o d 11 ) 2^{340}\equiv 1 \pmod{11} 2 340 ≡ 1 ( mod 11 ) です。また 2 5 = 32 = 31 + 1 ≡ 1 ( m o d 31 ) 2^{5}=32 = 31+1 \equiv 1 \pmod{31} 2 5 = 32 = 31 + 1 ≡ 1 ( mod 31 ) で 340 = 5 ⋅ 68 340 = 5\cdot 68 340 = 5 ⋅ 68 なので 2 340 ≡ 1 ( m o d 31 ) 2^{340}\equiv 1 \pmod{31} 2 340 ≡ 1 ( mod 31 ) です。gcd ( 11 , 31 ) = 1 \gcd(11,31)=1 g cd( 11 , 31 ) = 1 なので 定理 4.8 により 341 ∣ ( 2 340 − 1 ) 341 \mid (2^{340}-1) 341 ∣ ( 2 340 − 1 ) 、すなわち 2 340 ≡ 1 ( m o d 341 ) 2^{340}\equiv 1\pmod{341} 2 340 ≡ 1 ( mod 341 ) です。
底 3 3 3 : 法 11 11 11 では 3 5 = 243 = 22 ⋅ 11 + 1 ≡ 1 3^{5}=243 = 22\cdot 11 + 1 \equiv 1 3 5 = 243 = 22 ⋅ 11 + 1 ≡ 1 で 340 = 5 ⋅ 68 340 = 5\cdot 68 340 = 5 ⋅ 68 より 3 340 ≡ 1 ( m o d 11 ) 3^{340}\equiv 1 \pmod{11} 3 340 ≡ 1 ( mod 11 ) です。法 31 31 31 では、定理 5.1 より 3 30 ≡ 1 3^{30}\equiv 1 3 30 ≡ 1 で 340 = 30 ⋅ 11 + 10 340 = 30\cdot 11 + 10 340 = 30 ⋅ 11 + 10 なので 3 340 ≡ 3 10 ( m o d 31 ) 3^{340}\equiv 3^{10} \pmod{31} 3 340 ≡ 3 10 ( mod 31 ) です。3 3 = 27 3^{3}=27 3 3 = 27 、3 5 = 243 = 7 ⋅ 31 + 26 ≡ − 5 3^{5}=243 = 7\cdot 31 + 26 \equiv -5 3 5 = 243 = 7 ⋅ 31 + 26 ≡ − 5 なので 3 10 ≡ ( − 5 ) 2 = 25 ( m o d 31 ) 3^{10} \equiv (-5)^2 = 25 \pmod{31} 3 10 ≡ ( − 5 ) 2 = 25 ( mod 31 ) です。
3 340 ≡ 25 ≢ 1 ( m o d 31 ) 3^{340}\equiv 25 \not\equiv 1 \pmod{31} 3 340 ≡ 25 ≡ 1 ( mod 31 ) なので 3 340 ≢ 1 ( m o d 341 ) 3^{340}\not\equiv 1 \pmod{341} 3 340 ≡ 1 ( mod 341 ) であり、系 5.2 の対偶から 341 341 341 は合成数と判定されます。値を求めるには x ≡ 1 ( m o d 11 ) x\equiv 1 \pmod{11} x ≡ 1 ( mod 11 ) , x ≡ 25 ( m o d 31 ) x \equiv 25 \pmod{31} x ≡ 25 ( mod 31 ) を解きます。x = 25 + 31 k x = 25 + 31k x = 25 + 31 k とおくと 25 ≡ 3 25 \equiv 3 25 ≡ 3 , 31 ≡ 9 ( m o d 11 ) 31\equiv 9 \pmod{11} 31 ≡ 9 ( mod 11 ) より 3 + 9 k ≡ 1 3 + 9k \equiv 1 3 + 9 k ≡ 1 、9 k ≡ − 2 ≡ 9 ( m o d 11 ) 9k \equiv -2 \equiv 9 \pmod{11} 9 k ≡ − 2 ≡ 9 ( mod 11 ) 、gcd ( 9 , 11 ) = 1 \gcd(9,11)=1 g cd( 9 , 11 ) = 1 なので 命題 3.6 により k ≡ 1 ( m o d 11 ) k \equiv 1 \pmod{11} k ≡ 1 ( mod 11 ) です。k = 1 k=1 k = 1 として x = 56 x = 56 x = 56 、すなわち 3 340 ≡ 56 ( m o d 341 ) 3^{340}\equiv 56 \pmod{341} 3 340 ≡ 56 ( mod 341 ) です。
演習 7.4 難
合成数 n n n がカーマイケル数(定義 6.3 )であるならば、n n n は平方因子をもたず、かつ n n n のすべての素因数 p p p について ( p − 1 ) ∣ ( n − 1 ) (p-1)\mid (n-1) ( p − 1 ) ∣ ( n − 1 ) であることを示してください(コルセルトの判定条件の必要性)。
解答 n n n をカーマイケル数とします。
平方因子がないこと。p 2 ∣ n p^{2}\mid n p 2 ∣ n となる素数 p p p があったと仮定します。n n n の素因数分解から n = p e m n = p^{e}m n = p e m (e ≥ 2 e \ge 2 e ≥ 2 、p ∤ m p \nmid m p ∤ m )と書けます。gcd ( p 2 , m ) = 1 \gcd(p^{2}, m)=1 g cd( p 2 , m ) = 1 なので 定理 4.8 により
a ≡ 1 + p ( m o d p 2 ) , a ≡ 1 ( m o d m ) a \equiv 1 + p \pmod{p^{2}}, \qquad a \equiv 1 \pmod{m} a ≡ 1 + p ( mod p 2 ) , a ≡ 1 ( mod m ) を満たす整数 a a a が取れます。この a a a は p p p で割り切れず(a ≡ 1 ( m o d p ) a \equiv 1 \pmod p a ≡ 1 ( mod p ) )、m m m のどの素因数でも割り切れない(a ≡ 1 ( m o d m ) a\equiv 1 \pmod m a ≡ 1 ( mod m ) )ので gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 です。
二項定理より ( m o d p 2 ) \pmod{p^{2}} ( mod p 2 ) で
a k ≡ ( 1 + p ) k ≡ 1 + k p ( m o d p 2 ) a^{k} \equiv (1+p)^{k} \equiv 1 + kp \pmod{p^{2}} a k ≡ ( 1 + p ) k ≡ 1 + k p ( mod p 2 ) です(p 2 p^{2} p 2 以上の項はすべて p 2 p^{2} p 2 の倍数)。よって a n − 1 ≡ 1 ( m o d p 2 ) a^{n-1}\equiv 1 \pmod{p^{2}} a n − 1 ≡ 1 ( mod p 2 ) は p 2 ∣ ( n − 1 ) p p^{2} \mid (n-1)p p 2 ∣ ( n − 1 ) p 、すなわち p ∣ ( n − 1 ) p \mid (n-1) p ∣ ( n − 1 ) と同値です。ところが p ∣ n p \mid n p ∣ n なので p ∤ ( n − 1 ) p \nmid (n-1) p ∤ ( n − 1 ) であり、矛盾します。したがって n n n は平方因子をもちません。
( p − 1 ) ∣ ( n − 1 ) (p-1)\mid(n-1) ( p − 1 ) ∣ ( n − 1 ) であること。p p p を n n n の素因数とします。Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z は体で、その単元群 ( Z / p Z ) × (\mathbb{Z}/p\mathbb{Z})^{\times} ( Z / p Z ) × は位数 p − 1 p-1 p − 1 の巡回群です。その生成元 g g g を取り、定理 4.8 により a ≡ g ( m o d p ) a \equiv g \pmod p a ≡ g ( mod p ) かつ a ≡ 1 ( m o d n / p ) a \equiv 1 \pmod{n/p} a ≡ 1 ( mod n / p ) を満たす a a a を取ると gcd ( a , n ) = 1 \gcd(a,n)=1 g cd( a , n ) = 1 です(n n n は平方因子をもたないので gcd ( p , n / p ) = 1 \gcd(p, n/p)=1 g cd( p , n / p ) = 1 が使えます)。
カーマイケル数の定義から a n − 1 ≡ 1 ( m o d n ) a^{n-1}\equiv 1 \pmod n a n − 1 ≡ 1 ( mod n ) 、特に a n − 1 ≡ 1 ( m o d p ) a^{n-1}\equiv 1 \pmod p a n − 1 ≡ 1 ( mod p ) です。すなわち g n − 1 = 1 g^{n-1} = 1 g n − 1 = 1 が ( Z / p Z ) × (\mathbb{Z}/p\mathbb{Z})^{\times} ( Z / p Z ) × で成り立ちます。g g g の位数は p − 1 p-1 p − 1 なので、g k = 1 g^{k}=1 g k = 1 となる k k k は p − 1 p-1 p − 1 の倍数に限ります。よって ( p − 1 ) ∣ ( n − 1 ) (p-1)\mid(n-1) ( p − 1 ) ∣ ( n − 1 ) です。
(561 561 561 の場合、3 − 1 = 2 3-1=2 3 − 1 = 2 , 11 − 1 = 10 11-1=10 11 − 1 = 10 , 17 − 1 = 16 17-1=16 17 − 1 = 16 がいずれも 560 560 560 を割り切ることは 例 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 を導く筋道が書かれています。
数える対象を用意する。 定理 5.1 には、剰余類を一切使わない証明があります。a ≥ 1 a \ge 1 a ≥ 1 を整数、p p p を素数とし、a a a 色のビーズを p p p 個一列に並べた列全体を X X X とします。# X = a p \#X = a^{p} # X = a p です。
単色の列とそれ以外を分ける。 X X X に「巡回シフト」を作用させます。列 ( x 1 , … , x p ) (x_1,\ldots,x_p) ( x 1 , … , x p ) を ( x 2 , … , x p , x 1 ) (x_2,\ldots,x_p,x_1) ( x 2 , … , x p , x 1 ) に写す操作 τ \tau τ です。τ p \tau^{p} τ p は恒等写像なので、X X X は τ \tau τ の軌道に分割されます。ある列の軌道の大きさを k k k とすると、τ k \tau^{k} τ k がその列を動かさない最小の正の整数が k k k であり、τ p \tau^{p} τ p も動かさないことから k ∣ p k \mid p k ∣ p です。p p p は素数なので k = 1 k = 1 k = 1 か k = p k = p k = p しかありません。
軌道の大きさが 1 になるのは単色のときだけ。 k = 1 k=1 k = 1 とは τ \tau τ で不変、つまり x 1 = x 2 = ⋯ = x p x_1 = x_2 = \cdots = x_p x 1 = x 2 = ⋯ = x p ということです。そのような列は色の数だけあるので a a a 個です。残りの a p − a a^{p}-a a p − a 個の列は、すべて大きさ p p p の軌道に属します。
数え上げの結論。 X X X から単色の列を除いた集合は、大きさ p p p の軌道の直和なので、その要素数は p p p の倍数です。すなわち
p ∣ ( a p − a ) , p \mid (a^{p}-a), p ∣ ( a p − a ) ,
これは 系 5.2 にほかなりません。p ∤ a p \nmid a p ∤ a のときは gcd ( a , p ) = 1 \gcd(a,p)=1 g cd( a , p ) = 1 なので 命題 3.6 で a a a を消去して a p − 1 ≡ 1 ( m o d p ) a^{p-1}\equiv 1 \pmod p a p − 1 ≡ 1 ( mod p ) を得ます。a a a が負の整数や 0 0 0 の場合は、a a a を p p p で割った余りに置き換えれば 命題 3.3 により同じ結論が従います。
この証明の意味。 「p p p で割り切れる」という数論的事実を、「p p p 個ずつの組に分けられる」という数え上げの事実として説明している点が本質です。群 Z / p Z \mathbb{Z}/p\mathbb{Z} Z / p Z が集合に作用し、軌道の大きさが群の位数を割る(定理 6.1[部分群と剰余類] )、という軌道・固定点の一般論の最も単純な現れでもあります。