二つの整数の「共通の約数のうち最大のもの」を、素因数分解をせずに素早く求めるにはどうすればよいでしょうか。また、「3 で割ると 2 余り、5 で割ると 3 余る数」のような条件を同時に満たす数は、いつ、どのくらいあるのでしょうか。この記事は、この二つの素朴な疑問に答える道具を順に作ります。読み終えると、最大公約数の計算とその回数の見積もり、連立する余りの条件の解き方、そして 1 から n までの数のうち n と共通の約数をもたないものの個数の求め方が分かります。
ユークリッドの互除法 は、最大公約数を求めるだけでなく、ベズーの等式 gcd ( a , b ) = a x + b y \gcd(a,b)=ax+by g cd( a , b ) = a x + b y の係数 x , y x,y x , y も同時に与えます(拡張互除法)。割り算の回数は、小さい方の数の十進桁数の 5 倍以下です(ラメの定理。互除法が何回で終わるかの上限を与える定理です)。
素因数分解の一意性 を p p p 進付値 v p ( n ) v_p(n) v p ( n ) (n n n が素数 p p p で何回割り切れるかを表す数)の言葉で言い換えると、整除・最大公約数・最小公倍数がすべて指数の大小比較に翻訳されます。gcd ( a , b ) ⋅ l c m ( a , b ) = a b \gcd(a,b)\cdot\mathrm{lcm}(a,b)=ab g cd( a , b ) ⋅ lcm ( a , b ) = ab もその帰結です。
中国剰余定理 の一般形:連立合同式 x ≡ a ( m o d m ) x\equiv a\ (\mathrm{mod}\ m) x ≡ a ( mod m ) , x ≡ b ( m o d n ) x\equiv b\ (\mathrm{mod}\ n) x ≡ b ( mod n ) が解をもつ条件は gcd ( m , n ) ∣ a − b \gcd(m,n)\mid a-b g cd( m , n ) ∣ a − b で、解は l c m ( m , n ) \mathrm{lcm}(m,n) lcm ( m , n ) を法として一意です。法が互いに素なら、常に解けて一意に定まります。
互いに素な法に分解すると、合同式の問題は素数べきを法とする問題に帰着します。Z / m n Z \mathbb{Z}/mn\mathbb{Z} Z / mn Z と Z / m Z × Z / n Z \mathbb{Z}/m\mathbb{Z}\times\mathbb{Z}/n\mathbb{Z} Z / m Z × Z / n Z の間の全単射がその仕組みです。
オイラー関数 φ ( n ) \varphi(n) φ ( n ) は乗法的(互いに素な二数の積での値が、それぞれの値の積になること)で、φ ( n ) = n ∏ p ∣ n ( 1 − 1 / p ) \varphi(n)=n\prod_{p\mid n}(1-1/p) φ ( n ) = n ∏ p ∣ n ( 1 − 1/ p ) 。さらに ∑ d ∣ n φ ( d ) = n \sum_{d\mid n}\varphi(d)=n ∑ d ∣ n φ ( d ) = n が成り立ちます。この恒等式は、次の記事までに原始根 の存在証明に使われます。
この記事で使う事前知識
除法の原理 : 整数 a a a を正の整数 b b b で割ると、商と、0 0 0 以上 b b b 未満の余りがただ一通りに決まる、という性質。→ 素数と素数定理
ベズーの等式 : 最大公約数は、もとの二数の整数倍の和として書ける、という性質。→ 素数と素数定理
算術の基本定理 : 1 より大きい整数は素数の積に、順序を除いてただ一通りに書ける、という性質。→ 素数と素数定理
全単射 : 二つの集合の要素が、漏れも重なりもなく一対一に対応する写像。
フィボナッチ数 : 1 , 1 , 2 , 3 , 5 , 8 , … 1,1,2,3,5,8,\ldots 1 , 1 , 2 , 3 , 5 , 8 , … のように、直前の二つの和が次の数になる数列。
ユークリッドの『原論』第 7 巻の冒頭にある、二つの数の最大公約数を求める手順は、現存する最古のアルゴリズムの一つだと言われます。大きい方の数を小さい方で割った余りで、大きい方を置き換える。これを余りが 0 0 0 になるまで繰り返す。それだけの手順で、素因数分解を一切せずに最大公約数が求まります。10 100 10^{100} 1 0 100 のような数の素因数分解は現実的な時間では不可能と考えられていますが、互除法は数百回の割り算で終わります。
この記事は、整数論の最も基本的な四つの道具を整理します。互除法、素因数分解の一意性、中国剰余定理、オイラー関数です。これらは 素数と素数定理 で得た基本事項(除法の原理、ベズーの等式、算術の基本定理)の上に建ち、次の記事 合同式とフェルマーの小定理 や 原始根と平方剰余の相互法則 の下敷きになります。
記号。 Z \mathbb{Z} Z は整数全体、Z > 0 \mathbb{Z}_{>0} Z > 0 は正の整数全体です。整数 a , b a,b a , b について a ∣ b a\mid b a ∣ b は「b = a k b=ak b = ak となる整数 k k k がある」ことを表します。gcd ( a , b ) \gcd(a,b) g cd( a , b ) は a , b a,b a , b の最大公約数(定義 2.1[素数の魅力と素数定理] )で、gcd ( a , b ) = 1 \gcd(a,b)=1 g cd( a , b ) = 1 のとき a , b a,b a , b は互いに素 といいます。この記事は次の二つの既出の事実を使います。
補題 2.3[素数の魅力と素数定理] (除法の原理):b > 0 b>0 b > 0 のとき、a = b q + r a=bq+r a = b q + r , 0 ≤ r < b 0\le r<b 0 ≤ r < b となる整数の組 ( q , r ) (q,r) ( q , r ) がただ一つ存在する。
補題 2.4[素数の魅力と素数定理] (ベズーの等式):a , b a,b a , b が共に 0 0 0 でなければ、gcd ( a , b ) = a x 0 + b y 0 \gcd(a,b)=ax_0+by_0 g cd( a , b ) = a x 0 + b y 0 となる整数 x 0 , y 0 x_0,y_0 x 0 , y 0 が存在する。
最小公倍数を、最小性だけでなく倍数の構造まで込めて定義し直します。
定義 2.1 (最小公倍数 ) ↗
正の整数 m , n m,n m , n の最小公倍数 l c m ( m , n ) \mathrm{lcm}(m,n) lcm ( m , n ) とは、m m m と n n n の正の公倍数のうち最小のものをいう。
補題 2.2 (ユークリッドの補題(一般形) ) ✓
u , v , w u,v,w u , v , w を整数とし、gcd ( u , v ) = 1 \gcd(u,v)=1 g cd( u , v ) = 1 とする。u ∣ v w u\mid vw u ∣ v w ならば u ∣ w u\mid w u ∣ w である。
証明(補題 2.2) ベズーの等式(補題 2.4[素数の魅力と素数定理] )により 1 = u x + v y 1=ux+vy 1 = ux + v y となる整数 x , y x,y x , y が取れる。両辺に w w w を掛けて w = u ( w x ) + ( v w ) y w=u(wx)+(vw)y w = u ( w x ) + ( v w ) y 。右辺の第 1 項は u u u の倍数、第 2 項は仮定 u ∣ v w u\mid vw u ∣ v w により u u u の倍数なので、u ∣ w u\mid w u ∣ w 。
∎
素数 p p p に対する形(補題 4.1[素数の魅力と素数定理] )は、これで u = p u=p u = p とした特別な場合です(p ∤ v p\nmid v p ∤ v なら gcd ( p , v ) = 1 \gcd(p,v)=1 g cd( p , v ) = 1 )。次の合同式の記事の ユークリッドの補題 も同じ主張で、そこでは合同式の消去法則に使われます。
補題 2.3 (互いに素な商 ) ✓
m , n m,n m , n を整数で少なくとも一方は 0 0 0 でないとし、g = gcd ( m , n ) g=\gcd(m,n) g = g cd( m , n ) とすると、gcd ( m / g , n / g ) = 1 \gcd(m/g,\,n/g)=1 g cd( m / g , n / g ) = 1 である。
証明(補題 2.3) ベズーの等式により g = m x + n y g=mx+ny g = m x + n y と書ける。両辺を g g g で割って 1 = ( m / g ) x + ( n / g ) y 1=(m/g)x+(n/g)y 1 = ( m / g ) x + ( n / g ) y 。m / g , n / g m/g,n/g m / g , n / g の正の公約数 c c c は右辺を割り切り、c ∣ 1 c\mid1 c ∣ 1 なので c = 1 c=1 c = 1 。
∎
命題 2.4 (gcd と lcm の関係 ) ✓
正の整数 m , n m,n m , n について、g = gcd ( m , n ) g=\gcd(m,n) g = g cd( m , n ) 、L = m n / g L=mn/g L = mn / g とおく。
L L L は整数で、m m m と n n n の公倍数である。
m m m と n n n の公倍数はすべて L L L の倍数である。特に l c m ( m , n ) = L \mathrm{lcm}(m,n)=L lcm ( m , n ) = L であり、gcd ( m , n ) ⋅ l c m ( m , n ) = m n \gcd(m,n)\cdot\mathrm{lcm}(m,n)=mn g cd( m , n ) ⋅ lcm ( m , n ) = mn 。
証明(命題 2.4) (1) L = m ⋅ ( n / g ) = n ⋅ ( m / g ) L=m\cdot(n/g)=n\cdot(m/g) L = m ⋅ ( n / g ) = n ⋅ ( m / g ) なので、整数で、m m m の倍数かつ n n n の倍数。
(2) c c c を公倍数とし、c = m c ′ c=mc' c = m c ′ と書く。n ∣ m c ′ n\mid mc' n ∣ m c ′ より ( n / g ) ∣ ( m / g ) c ′ (n/g)\mid(m/g)c' ( n / g ) ∣ ( m / g ) c ′ 。gcd ( n / g , m / g ) = 1 \gcd(n/g,m/g)=1 g cd( n / g , m / g ) = 1 なので(補題 2.3 )、( n / g ) ∣ c ′ (n/g)\mid c' ( n / g ) ∣ c ′ (補題 2.2 )。c ′ = ( n / g ) c ′ ′ c'=(n/g)c'' c ′ = ( n / g ) c ′′ とおくと c = m c ′ = L c ′ ′ c=mc'=Lc'' c = m c ′ = L c ′′ 。したがって最小の正の公倍数は L L L 。
∎
定義 3.1 (ユークリッドの互除法 ) ↗
正の整数 a > b a>b a > b に対し、r − 1 = a r_{-1}=a r − 1 = a , r 0 = b r_0=b r 0 = b とおき、r i > 0 r_i>0 r i > 0 である限り、除法の原理で
r i − 1 = q i r i + r i + 1 , 0 ≤ r i + 1 < r i ( i = 0 , 1 , 2 , … ) r_{i-1}=q_i\,r_i+r_{i+1},\qquad 0\le r_{i+1}<r_i\qquad(i=0,1,2,\ldots) r i − 1 = q i r i + r i + 1 , 0 ≤ r i + 1 < r i ( i = 0 , 1 , 2 , … ) と商 q i q_i q i と余り r i + 1 r_{i+1} r i + 1 を定める。余りが初めて 0 0 0 になる、すなわち r n + 1 = 0 r_{n+1}=0 r n + 1 = 0 となる n n n を段数 といい(余りが 0 0 0 になる最後の割り算を含めて、割り算は n + 1 n+1 n + 1 回行われる)、この手順をユークリッドの互除法 という。
余りは真に減少する非負整数なので、必ず有限回で 0 0 0 になります(整列性 )。
定理 3.2 (互除法の正しさと拡張 ) ✓
互除法の最後の非零の余り r n r_n r n は gcd ( a , b ) \gcd(a,b) g cd( a , b ) に等しい。さらに、整数列 s i , t i s_i,t_i s i , t i を
s − 1 = 1 , t − 1 = 0 , s 0 = 0 , t 0 = 1 , s i + 1 = s i − 1 − q i s i , t i + 1 = t i − 1 − q i t i s_{-1}=1,\ t_{-1}=0,\quad s_0=0,\ t_0=1,\qquad s_{i+1}=s_{i-1}-q_i s_i,\quad t_{i+1}=t_{i-1}-q_i t_i s − 1 = 1 , t − 1 = 0 , s 0 = 0 , t 0 = 1 , s i + 1 = s i − 1 − q i s i , t i + 1 = t i − 1 − q i t i で定めると、すべての i i i について r i = a s i + b t i r_i=a\,s_i+b\,t_i r i = a s i + b t i が成り立つ。特に gcd ( a , b ) = a s n + b t n \gcd(a,b)=a\,s_n+b\,t_n g cd( a , b ) = a s n + b t n である。
証明(定理 3.2) 最後の余り = gcd =\gcd = g cd 。一般に a = b q + r a=bq+r a = b q + r のとき gcd ( a , b ) = gcd ( b , r ) \gcd(a,b)=\gcd(b,r) g cd( a , b ) = g cd( b , r ) である:a , b a,b a , b の公約数は r = a − b q r=a-bq r = a − b q を割り切り、b , r b,r b , r の公約数は a = b q + r a=bq+r a = b q + r を割り切るので、公約数の集合が一致する。これを繰り返して gcd ( a , b ) = gcd ( r 0 , r 1 ) = ⋯ = gcd ( r n , r n + 1 ) = gcd ( r n , 0 ) = r n \gcd(a,b)=\gcd(r_0,r_1)=\cdots=\gcd(r_n,r_{n+1})=\gcd(r_n,0)=r_n g cd( a , b ) = g cd( r 0 , r 1 ) = ⋯ = g cd( r n , r n + 1 ) = g cd( r n , 0 ) = r n 。
係数 。i = − 1 i=-1 i = − 1 では r − 1 = a = a ⋅ 1 + b ⋅ 0 r_{-1}=a=a\cdot1+b\cdot0 r − 1 = a = a ⋅ 1 + b ⋅ 0 、i = 0 i=0 i = 0 では r 0 = b = a ⋅ 0 + b ⋅ 1 r_0=b=a\cdot0+b\cdot1 r 0 = b = a ⋅ 0 + b ⋅ 1 で正しい。i − 1 , i i-1,i i − 1 , i で成り立つとすると、
r i + 1 = r i − 1 − q i r i = ( a s i − 1 + b t i − 1 ) − q i ( a s i + b t i ) = a s i + 1 + b t i + 1 . r_{i+1}=r_{i-1}-q_ir_i=(as_{i-1}+bt_{i-1})-q_i(as_i+bt_i)=a\,s_{i+1}+b\,t_{i+1}. r i + 1 = r i − 1 − q i r i = ( a s i − 1 + b t i − 1 ) − q i ( a s i + b t i ) = a s i + 1 + b t i + 1 . ∎
ベズーの等式の存在証明(最小元を取る)と違い、これは係数を構成 する手順を与えます。
例 3.3 (252 と 105 )
a = 252 a=252 a = 252 , b = 105 b=105 b = 105 とします。
252 = 2 ⋅ 105 + 42 , 105 = 2 ⋅ 42 + 21 , 42 = 2 ⋅ 21 + 0. 252=2\cdot105+42,\qquad105=2\cdot42+21,\qquad42=2\cdot21+0. 252 = 2 ⋅ 105 + 42 , 105 = 2 ⋅ 42 + 21 , 42 = 2 ⋅ 21 + 0. n = 2 n=2 n = 2 (非零の余りは 42 , 21 42,21 42 , 21 )で、gcd ( 252 , 105 ) = 21 \gcd(252,105)=21 g cd( 252 , 105 ) = 21 。係数は ( q 0 , q 1 , q 2 ) = ( 2 , 2 , 2 ) (q_0,q_1,q_2)=(2,2,2) ( q 0 , q 1 , q 2 ) = ( 2 , 2 , 2 ) から、s 1 = 1 − 2 ⋅ 0 = 1 s_1=1-2\cdot0=1 s 1 = 1 − 2 ⋅ 0 = 1 , t 1 = 0 − 2 ⋅ 1 = − 2 t_1=0-2\cdot1=-2 t 1 = 0 − 2 ⋅ 1 = − 2 (確かに r 1 = 42 = 252 − 2 ⋅ 105 r_1=42=252-2\cdot105 r 1 = 42 = 252 − 2 ⋅ 105 )、s 2 = 0 − 2 ⋅ 1 = − 2 s_2=0-2\cdot1=-2 s 2 = 0 − 2 ⋅ 1 = − 2 , t 2 = 1 − 2 ⋅ ( − 2 ) = 5 t_2=1-2\cdot(-2)=5 t 2 = 1 − 2 ⋅ ( − 2 ) = 5 。よって
21 = 252 ⋅ ( − 2 ) + 105 ⋅ 5 = − 504 + 525. 21=252\cdot(-2)+105\cdot5=-504+525. 21 = 252 ⋅ ( − 2 ) + 105 ⋅ 5 = − 504 + 525.
互除法は長方形の分割とも読めます。縦 105 105 105 、横 252 252 252 の長方形から、できるだけ大きい正方形を切り出し続けると、最後に残る正方形の一辺が最大公約数 21 21 21 です。
105 × 105 105 × 105 42 42 21 21
252 × 105 の長方形から、一辺 105 の正方形を 2 つ、残りの 42 × 105 から一辺 42 の正方形を 2 つ、残りの 42 × 21 から一辺 21 の正方形を 2 つ切り出す。最後の正方形の一辺が gcd。
互除法はどれだけ速いのでしょうか。割り算の回数を、フィボナッチ数 F 1 = F 2 = 1 F_1=F_2=1 F 1 = F 2 = 1 , F k + 2 = F k + 1 + F k F_{k+2}=F_{k+1}+F_k F k + 2 = F k + 1 + F k で評価できます。
定理 3.4 (ラメの定理 ) ✓
a > b ≥ 1 a>b\ge1 a > b ≥ 1 に対する互除法の段数を n n n とすると、b ≥ F n + 2 b\ge F_{n+2} b ≥ F n + 2 (かつ a ≥ F n + 3 a\ge F_{n+3} a ≥ F n + 3 )。したがって b < 10 d b<10^d b < 1 0 d ならば n < 5 d n<5d n < 5 d 、すなわち割り算の回数 n + 1 n+1 n + 1 は 5 d 5d 5 d 以下である。
証明の方針:互除法が長く続くためには、余りがゆっくり減らなければなりません。ゆっくり減る最悪の場合を、末尾から逆にたどってフィボナッチ数で下から押さえます。後半は、フィボナッチ数が 5 つ進むごとに 10 倍を超えて大きくなること(k ≥ 2 k\ge2 k ≥ 2 で F k + 5 > 10 F k F_{k+5}>10F_k F k + 5 > 10 F k )を使って、桁数との関係に直します。
証明(定理 3.4) r n ≥ 1 r_n\ge1 r n ≥ 1 で、r n ∣ r n − 1 r_n\mid r_{n-1} r n ∣ r n − 1 かつ r n − 1 > r n r_{n-1}>r_n r n − 1 > r n なので r n − 1 ≥ 2 r n ≥ 2 r_{n-1}\ge2r_n\ge2 r n − 1 ≥ 2 r n ≥ 2 。各 i ≥ 0 i\ge0 i ≥ 0 で q i ≥ 1 q_i\ge1 q i ≥ 1 だから(r i − 1 > r i r_{i-1}>r_i r i − 1 > r i なので商は 0 0 0 にならない)r i − 1 = q i r i + r i + 1 ≥ r i + r i + 1 r_{i-1}=q_ir_i+r_{i+1}\ge r_i+r_{i+1} r i − 1 = q i r i + r i + 1 ≥ r i + r i + 1 。これを下から使う。r n ≥ 1 = F 2 r_n\ge1=F_2 r n ≥ 1 = F 2 , r n − 1 ≥ 2 = F 3 r_{n-1}\ge2=F_3 r n − 1 ≥ 2 = F 3 , r n − 2 ≥ r n − 1 + r n ≥ F 3 + F 2 = F 4 r_{n-2}\ge r_{n-1}+r_n\ge F_3+F_2=F_4 r n − 2 ≥ r n − 1 + r n ≥ F 3 + F 2 = F 4 , ……と帰納的に r n − j ≥ F j + 2 r_{n-j}\ge F_{j+2} r n − j ≥ F j + 2 。j = n j=n j = n で b = r 0 ≥ F n + 2 b=r_0\ge F_{n+2} b = r 0 ≥ F n + 2 、j = n + 1 j=n+1 j = n + 1 で a = r − 1 ≥ F n + 3 a=r_{-1}\ge F_{n+3} a = r − 1 ≥ F n + 3 。
後半。まず任意の k ≥ 2 k\ge2 k ≥ 2 で F k + 5 > 10 F k F_{k+5}>10F_k F k + 5 > 10 F k を示す。F k + 5 = 5 F k + 1 + 3 F k F_{k+5}=5F_{k+1}+3F_k F k + 5 = 5 F k + 1 + 3 F k (展開すれば確かめられる)で、k ≥ 2 k\ge2 k ≥ 2 なら F k + 1 ≥ 3 2 F k F_{k+1}\ge\tfrac32F_k F k + 1 ≥ 2 3 F k (k = 2 k=2 k = 2 は F 3 = 2 F 2 F_3=2F_2 F 3 = 2 F 2 。以降は F k + 1 ≤ 2 F k F_{k+1}\le2F_k F k + 1 ≤ 2 F k より F k + 2 = F k + 1 + F k ≥ F k + 1 + 1 2 F k + 1 F_{k+2}=F_{k+1}+F_k\ge F_{k+1}+\tfrac12F_{k+1} F k + 2 = F k + 1 + F k ≥ F k + 1 + 2 1 F k + 1 )だから F k + 5 ≥ 15 2 F k + 3 F k = 10.5 F k F_{k+5}\ge\tfrac{15}{2}F_k+3F_k=10.5F_k F k + 5 ≥ 2 15 F k + 3 F k = 10.5 F k 。ここから帰納法で F 5 d + 2 > 10 d F_{5d+2}>10^d F 5 d + 2 > 1 0 d (d = 1 d=1 d = 1 : F 7 = 13 > 10 F_7=13>10 F 7 = 13 > 10 )。b < 10 d b<10^d b < 1 0 d とすると F n + 2 ≤ b < 10 d < F 5 d + 2 F_{n+2}\le b<10^d<F_{5d+2} F n + 2 ≤ b < 1 0 d < F 5 d + 2 。F k F_k F k は広義単調増加なので n + 2 < 5 d + 2 n+2<5d+2 n + 2 < 5 d + 2 、すなわち n < 5 d n<5d n < 5 d 。
∎
等号に近い最悪の入力は、隣り合うフィボナッチ数 ( F n + 3 , F n + 2 ) (F_{n+3},F_{n+2}) ( F n + 3 , F n + 2 ) です。このとき最後の商を除いて商はすべて 1 1 1 で、割り算の回数が最大になります。
ベズーの等式の最も直接的な応用です。
命題 4.1 (一次不定方程式 ) ✓
a , b a,b a , b を共に 0 0 0 でない整数、c c c を整数、g = gcd ( a , b ) g=\gcd(a,b) g = g cd( a , b ) とする。方程式 a x + b y = c ax+by=c a x + b y = c が整数解をもつための必要十分条件は g ∣ c g\mid c g ∣ c である。このとき一つの解 ( x 0 , y 0 ) (x_0,y_0) ( x 0 , y 0 ) を用いて、解全体は
( x , y ) = ( x 0 + b g k , y 0 − a g k ) ( k ∈ Z ) (x,y)=\Bigl(x_0+\frac{b}{g}k,\ y_0-\frac{a}{g}k\Bigr)\qquad(k\in\mathbb{Z}) ( x , y ) = ( x 0 + g b k , y 0 − g a k ) ( k ∈ Z ) で尽くされる。
証明(命題 4.1) 解があれば g ∣ a g\mid a g ∣ a , g ∣ b g\mid b g ∣ b より g ∣ a x + b y = c g\mid ax+by=c g ∣ a x + b y = c 。逆に g ∣ c g\mid c g ∣ c とし、c = g c ′ c=gc' c = g c ′ とする。ベズーの等式 g = a u + b v g=au+bv g = a u + b v から ( x 0 , y 0 ) = ( u c ′ , v c ′ ) (x_0,y_0)=(uc',vc') ( x 0 , y 0 ) = ( u c ′ , v c ′ ) が解になる。
( x , y ) (x,y) ( x , y ) を別の解とすると a ( x − x 0 ) = − b ( y − y 0 ) a(x-x_0)=-b(y-y_0) a ( x − x 0 ) = − b ( y − y 0 ) 。g g g で割って ( a / g ) ( x − x 0 ) = − ( b / g ) ( y − y 0 ) (a/g)(x-x_0)=-(b/g)(y-y_0) ( a / g ) ( x − x 0 ) = − ( b / g ) ( y − y 0 ) 。gcd ( a / g , b / g ) = 1 \gcd(a/g,b/g)=1 g cd( a / g , b / g ) = 1 なので(補題 2.3 )、( b / g ) ∣ ( a / g ) ( x − x 0 ) (b/g)\mid(a/g)(x-x_0) ( b / g ) ∣ ( a / g ) ( x − x 0 ) に 補題 2.2 を使って ( b / g ) ∣ ( x − x 0 ) (b/g)\mid(x-x_0) ( b / g ) ∣ ( x − x 0 ) 。x − x 0 = ( b / g ) k x-x_0=(b/g)k x − x 0 = ( b / g ) k と書けば、y − y 0 = − ( a / g ) k y-y_0=-(a/g)k y − y 0 = − ( a / g ) k が従う。逆にこの形の組が解であることは代入で確かめられる。
∎
例 4.2 (252x + 105y = 63 )
g = 21 g=21 g = 21 , 63 = 21 ⋅ 3 63=21\cdot3 63 = 21 ⋅ 3 なので解がある。例 3.3 の 21 = 252 ⋅ ( − 2 ) + 105 ⋅ 5 21=252\cdot(-2)+105\cdot5 21 = 252 ⋅ ( − 2 ) + 105 ⋅ 5 を 3 3 3 倍して ( x 0 , y 0 ) = ( − 6 , 15 ) (x_0,y_0)=(-6,15) ( x 0 , y 0 ) = ( − 6 , 15 ) 。一般解は ( x , y ) = ( − 6 + 5 k , 15 − 12 k ) (x,y)=(-6+5k,\ 15-12k) ( x , y ) = ( − 6 + 5 k , 15 − 12 k ) (b / g = 5 b/g=5 b / g = 5 , a / g = 12 a/g=12 a / g = 12 )。k = 1 k=1 k = 1 で ( − 1 , 3 ) (-1,3) ( − 1 , 3 ) :− 252 + 315 = 63 -252+315=63 − 252 + 315 = 63 ✓。
素数と素数定理 で証明した算術の基本定理は、「1 1 1 より大きい整数は素数の積に書け、その表し方は順序を除いて一意」というものでした(定理 4.2[素数の魅力と素数定理] )。ここでは、一意性を計算に使いやすい形に言い換えます。
定義 5.1 (素数 p に関する付値 ) ↗
素数 p p p と正の整数 n n n について、p e ∣ n p^e\mid n p e ∣ n を満たす最大の整数 e ≥ 0 e\ge0 e ≥ 0 を v p ( n ) v_p(n) v p ( n ) と書く。
定理 5.2 (素因数分解の指数による表示 ) ✓
正の整数 n n n について、v p ( n ) v_p(n) v p ( n ) は有限で、v p ( n ) ≠ 0 v_p(n)\ne0 v p ( n ) = 0 となる素数 p p p は有限個であり、
n = ∏ p p v p ( n ) n=\prod_{p}p^{v_p(n)} n = p ∏ p v p ( n ) が成り立つ。さらに、素数べきの積として n = ∏ p p e p n=\prod_pp^{e_p} n = ∏ p p e p (e p ≥ 0 e_p\ge0 e p ≥ 0 で有限個を除いて 0 0 0 )と書く方法は、指数の組 ( e p ) p = ( v p ( n ) ) p (e_p)_p=(v_p(n))_p ( e p ) p = ( v p ( n ) ) p のただ一つに限る。
証明の中の「空積」は、一つも因数がない積のことで、値は 1 1 1 と約束します。したがって n = 1 n=1 n = 1 は、どの素数の指数も 0 0 0 の表示に当たります。
証明(定理 5.2) n = 1 n=1 n = 1 は空積。素数での指数の有限性は、p e ∣ n p^e\mid n p e ∣ n なら p e ≤ n p^e\le n p e ≤ n より e < n e<n e < n から従う。まず、n = ∏ p p e p n=\prod_pp^{e_p} n = ∏ p p e p という任意の表示(e p ≥ 0 e_p\ge0 e p ≥ 0 、有限個を除いて 0 0 0 )について e p = v p ( n ) e_p=v_p(n) e p = v p ( n ) を示す。p e p ∣ n p^{e_p}\mid n p e p ∣ n は明らか。p e p + 1 ∣ n p^{e_p+1}\mid n p e p + 1 ∣ n とすると、n = p e p ∏ q ≠ p q e q n=p^{e_p}\prod_{q\ne p}q^{e_q} n = p e p ∏ q = p q e q から p ∣ ∏ q ≠ p q e q p\mid\prod_{q\ne p}q^{e_q} p ∣ ∏ q = p q e q 。ユークリッドの補題(補題 4.1[素数の魅力と素数定理] )を繰り返すと、p p p はある素数 q ≠ p q\ne p q = p を割り切るが、素数 q q q の正の約数は 1 1 1 と q q q だけなので p = q p=q p = q となり矛盾する。よって e p = v p ( n ) e_p=v_p(n) e p = v p ( n ) 。
一方、n > 1 n>1 n > 1 には 定理 4.2[素数の魅力と素数定理] により素数の積としての表示が存在する。同じ素数をまとめれば上の形の表示になるので、n = ∏ p p v p ( n ) n=\prod_pp^{v_p(n)} n = ∏ p p v p ( n ) が成り立ち、v p ( n ) ≠ 0 v_p(n)\ne0 v p ( n ) = 0 となる p p p は表示に現れる素数に限るから有限個である。表示が ( v p ( n ) ) p (v_p(n))_p ( v p ( n ) ) p に限ることは、前段で示したとおり。
∎
付値は積を和に変えます。
命題 5.3 (付値の規則と gcd・lcm ) ✓
正の整数 a , b a,b a , b と素数 p p p について次が成り立つ。
v p ( a b ) = v p ( a ) + v p ( b ) v_p(ab)=v_p(a)+v_p(b) v p ( ab ) = v p ( a ) + v p ( b ) 。
a ∣ b ⟺ a\mid b\iff a ∣ b ⟺ すべての素数 p p p で v p ( a ) ≤ v p ( b ) v_p(a)\le v_p(b) v p ( a ) ≤ v p ( b ) 。
v p ( gcd ( a , b ) ) = min ( v p ( a ) , v p ( b ) ) v_p(\gcd(a,b))=\min(v_p(a),v_p(b)) v p ( g cd( a , b )) = min ( v p ( a ) , v p ( b )) 、v p ( l c m ( a , b ) ) = max ( v p ( a ) , v p ( b ) ) v_p(\mathrm{lcm}(a,b))=\max(v_p(a),v_p(b)) v p ( lcm ( a , b )) = max ( v p ( a ) , v p ( b )) 。
特に gcd ( a , b ) l c m ( a , b ) = a b \gcd(a,b)\,\mathrm{lcm}(a,b)=ab g cd( a , b ) lcm ( a , b ) = ab (命題 2.4 の別証明)。
証明(命題 5.3) (1) a = ∏ p v p ( a ) a=\prod p^{v_p(a)} a = ∏ p v p ( a ) , b = ∏ p v p ( b ) b=\prod p^{v_p(b)} b = ∏ p v p ( b ) の積は ∏ p v p ( a ) + v p ( b ) \prod p^{v_p(a)+v_p(b)} ∏ p v p ( a ) + v p ( b ) で、定理 5.2 の一意性により v p ( a b ) = v p ( a ) + v p ( b ) v_p(ab)=v_p(a)+v_p(b) v p ( ab ) = v p ( a ) + v p ( b ) 。
(2) (⇒ \Rightarrow ⇒ ) b = a k b=ak b = ak なら (1) より v p ( b ) = v p ( a ) + v p ( k ) ≥ v p ( a ) v_p(b)=v_p(a)+v_p(k)\ge v_p(a) v p ( b ) = v p ( a ) + v p ( k ) ≥ v p ( a ) 。(⇐ \Leftarrow ⇐ ) k = ∏ p v p ( b ) − v p ( a ) k=\prod p^{v_p(b)-v_p(a)} k = ∏ p v p ( b ) − v p ( a ) は正の整数で b = a k b=ak b = ak 。
(3) c c c が a , b a,b a , b の公約数であることは、(2) により「すべての p p p で v p ( c ) ≤ min ( v p ( a ) , v p ( b ) ) v_p(c)\le\min(v_p(a),v_p(b)) v p ( c ) ≤ min ( v p ( a ) , v p ( b )) 」と同値。∏ p min \prod p^{\min} ∏ p m i n が最大の公約数。lcm も同様に max \max max 。
(4) min ( x , y ) + max ( x , y ) = x + y \min(x,y)+\max(x,y)=x+y min ( x , y ) + max ( x , y ) = x + y 。
∎
例 5.4 (付値による gcd と lcm )
a = 252 = 2 2 ⋅ 3 2 ⋅ 7 a=252=2^2\cdot3^2\cdot7 a = 252 = 2 2 ⋅ 3 2 ⋅ 7 , b = 105 = 3 ⋅ 5 ⋅ 7 b=105=3\cdot5\cdot7 b = 105 = 3 ⋅ 5 ⋅ 7 のとき、素数 2 , 3 , 5 , 7 2,3,5,7 2 , 3 , 5 , 7 での指数は a : ( 2 , 2 , 0 , 1 ) a:(2,2,0,1) a : ( 2 , 2 , 0 , 1 ) , b : ( 0 , 1 , 1 , 1 ) b:(0,1,1,1) b : ( 0 , 1 , 1 , 1 ) 。min は ( 0 , 1 , 0 , 1 ) (0,1,0,1) ( 0 , 1 , 0 , 1 ) で gcd = 3 ⋅ 7 = 21 \gcd=3\cdot7=21 g cd= 3 ⋅ 7 = 21 、max は ( 2 , 2 , 1 , 1 ) (2,2,1,1) ( 2 , 2 , 1 , 1 ) で l c m = 4 ⋅ 9 ⋅ 5 ⋅ 7 = 1260 \mathrm{lcm}=4\cdot9\cdot5\cdot7=1260 lcm = 4 ⋅ 9 ⋅ 5 ⋅ 7 = 1260 。確かに 21 ⋅ 1260 = 26460 = 252 ⋅ 105 21\cdot1260=26460=252\cdot105 21 ⋅ 1260 = 26460 = 252 ⋅ 105 。
命題 5.5 (約数の個数 ) ✓
n = ∏ i = 1 k p i e i n=\prod_{i=1}^kp_i^{e_i} n = ∏ i = 1 k p i e i ならば、n n n の正の約数の個数は ∏ i = 1 k ( e i + 1 ) \prod_{i=1}^k(e_i+1) ∏ i = 1 k ( e i + 1 ) である。
証明(命題 5.5) 命題 5.3 (2) により、正の約数 d d d は 0 ≤ v p i ( d ) ≤ e i 0\le v_{p_i}(d)\le e_i 0 ≤ v p i ( d ) ≤ e i と、その他の素数での指数が 0 0 0 であること(d ∣ n d\mid n d ∣ n なので d d d の素因数は p i p_i p i に限る)で決まり、定理 5.2 により指数の組と約数が一対一に対応する。各 i i i の選び方は e i + 1 e_i+1 e i + 1 通り。
∎
整数 a , b a,b a , b と正の整数 n n n について、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 ) と書きます(合同 の基本は 合同式とフェルマーの小定理 で詳しく扱います)。ここでは定義だけを使います。
定理 6.1 (中国剰余定理(一般形) ) ✓
m , n m,n m , n を正の整数、g = gcd ( m , n ) g=\gcd(m,n) g = g cd( m , n ) とし、a , b a,b a , b を整数とする。連立合同式
x ≡ a ( m o d m ) , x ≡ b ( m o d n ) x\equiv a\pmod m,\qquad x\equiv b\pmod n x ≡ a ( mod m ) , x ≡ b ( mod n ) が整数解をもつための必要十分条件は g ∣ a − b g\mid a-b g ∣ a − b である。このとき、解の全体は l c m ( m , n ) \mathrm{lcm}(m,n) lcm ( m , n ) を法とするただ一つの剰余類をなす。特に g = 1 g=1 g = 1 なら、任意の a , b a,b a , b に対して解が存在し、m n mn mn を法として一意である。
証明の方針:解は x = a + ( m の倍数 ) x=a+(m\text{ の倍数}) x = a + ( m の倍数 ) の形で探します。x ≡ a ( m o d m ) x\equiv a\pmod m x ≡ a ( mod m ) はこれで自動的に満たされるので、残る条件 x ≡ b ( m o d n ) x\equiv b\pmod n x ≡ b ( mod n ) を満たすよう倍数の部分を調整します。ここで g = u m + v n g=um+vn g = u m + v n という式が、その調整に使えます。なお、解の全体が一つの剰余類(l c m ( m , n ) \mathrm{lcm}(m,n) lcm ( m , n ) で割った余りが等しい整数の集まり)になることも示します。
証明(定理 6.1) 必要性 。解 x x x があれば m ∣ x − a m\mid x-a m ∣ x − a , n ∣ x − b n\mid x-b n ∣ x − b で、g ∣ m g\mid m g ∣ m , g ∣ n g\mid n g ∣ n だから g ∣ x − a g\mid x-a g ∣ x − a , g ∣ x − b g\mid x-b g ∣ x − b 。差をとって g ∣ a − b g\mid a-b g ∣ a − b 。
十分性 。g ∣ b − a g\mid b-a g ∣ b − a とし、b − a = g k b-a=gk b − a = g k と書く。ベズーの等式 g = u m + v n g=um+vn g = u m + v n をとり、x = a + m u k x=a+m\,u\,k x = a + m u k とおく。x ≡ a ( m o d m ) x\equiv a\pmod m x ≡ a ( mod m ) は明らか。さらに
x − b = ( a − b ) + m u k = − g k + m u k = k ( m u − g ) = − k v n x-b=(a-b)+muk=-gk+muk=k(mu-g)=-k\,vn x − b = ( a − b ) + m u k = − g k + m u k = k ( m u − g ) = − k v n で、n n n の倍数。よって x ≡ b ( m o d n ) x\equiv b\pmod n x ≡ b ( mod n ) 。
一意性 。x , x ′ x,x' x , x ′ を二つの解とすると m ∣ x − x ′ m\mid x-x' m ∣ x − x ′ かつ n ∣ x − x ′ n\mid x-x' n ∣ x − x ′ なので、命題 2.4 により l c m ( m , n ) ∣ x − x ′ \mathrm{lcm}(m,n)\mid x-x' lcm ( m , n ) ∣ x − x ′ 。逆に x x x が解で x ′ ≡ x ( m o d l c m ( m , n ) ) x'\equiv x\pmod{\mathrm{lcm}(m,n)} x ′ ≡ x ( mod lcm ( m , n )) なら x ′ x' x ′ も解。
∎
例 6.2 (法が互いに素でない場合 )
x ≡ 2 ( m o d 12 ) x\equiv2\pmod{12} x ≡ 2 ( mod 12 ) , x ≡ 8 ( m o d 18 ) x\equiv8\pmod{18} x ≡ 8 ( mod 18 ) 。gcd ( 12 , 18 ) = 6 \gcd(12,18)=6 g cd( 12 , 18 ) = 6 で 8 − 2 = 6 8-2=6 8 − 2 = 6 は 6 6 6 で割り切れるので解がある。l c m = 36 \mathrm{lcm}=36 lcm = 36 。x ≡ 2 ( m o d 12 ) x\equiv2\pmod{12} x ≡ 2 ( mod 12 ) の候補 2 , 14 , 26 2,14,26 2 , 14 , 26 のうち、18 18 18 で割った余りが 8 8 8 なのは x = 26 x=26 x = 26 (26 = 18 + 8 26=18+8 26 = 18 + 8 )。解は x ≡ 26 ( m o d 36 ) x\equiv26\pmod{36} x ≡ 26 ( mod 36 ) 。一方 x ≡ 1 ( m o d 12 ) x\equiv1\pmod{12} x ≡ 1 ( mod 12 ) , x ≡ 2 ( m o d 18 ) x\equiv2\pmod{18} x ≡ 2 ( mod 18 ) は gcd = 6 ∤ 1 \gcd=6\nmid1 g cd= 6 ∤ 1 なので解がない:x x x は偶数であるはずなのに x ≡ 1 ( m o d 12 ) x\equiv1\pmod{12} x ≡ 1 ( mod 12 ) は奇数を要求する。
系 6.3 (互いに素な法の連立合同式 ) ✓
m 1 , … , m k m_1,\ldots,m_k m 1 , … , m k を、どの二つも互いに素な正の整数、M = m 1 ⋯ m k M=m_1\cdots m_k M = m 1 ⋯ m k とする。任意の整数 a 1 , … , a k a_1,\ldots,a_k a 1 , … , a k に対して、連立合同式 x ≡ a i ( m o d m i ) x\equiv a_i\pmod{m_i} x ≡ a i ( mod m i ) (i = 1 , … , k i=1,\ldots,k i = 1 , … , k )は M M M を法としてただ一つの解をもつ。解は
x ≡ ∑ i = 1 k a i M i y i ( m o d M ) , M i = M m i , M i y i ≡ 1 ( m o d m i ) x\equiv\sum_{i=1}^ka_i\,M_i\,y_i\pmod M,\qquad M_i=\frac{M}{m_i},\quad M_iy_i\equiv1\pmod{m_i} x ≡ i = 1 ∑ k a i M i y i ( mod M ) , M i = m i M , M i y i ≡ 1 ( mod m i ) で与えられる。
証明(系 6.3) gcd ( M i , m i ) = 1 \gcd(M_i,m_i)=1 g cd( M i , m i ) = 1 である:素数 p p p が m i m_i m i と M i = ∏ j ≠ i m j M_i=\prod_{j\ne i}m_j M i = ∏ j = i m j を割り切るとすると、ユークリッドの補題によりある m j m_j m j (j ≠ i j\ne i j = i ) を割り切り、gcd ( m i , m j ) = 1 \gcd(m_i,m_j)=1 g cd( m i , m j ) = 1 に反する。したがってベズーの等式 1 = M i x + m i z 1=M_ix+m_iz 1 = M i x + m i z から y i = x y_i=x y i = x が存在する。x 0 = ∑ i a i M i y i x_0=\sum_ia_iM_iy_i x 0 = ∑ i a i M i y i とおくと、j ≠ i j\ne i j = i なら m j ∣ M i m_j\mid M_i m j ∣ M i なので a i M i y i ≡ 0 ( m o d m j ) a_iM_iy_i\equiv0\pmod{m_j} a i M i y i ≡ 0 ( mod m j ) 、よって x 0 ≡ a j M j y j ≡ a j ( m o d m j ) x_0\equiv a_jM_jy_j\equiv a_j\pmod{m_j} x 0 ≡ a j M j y j ≡ a j ( mod m j ) 。解の存在が示せた。一意性:二つの解の差はすべての m i m_i m i で割り切れ、互いに素な数の公倍数なので、命題 2.4 を繰り返して M M M で割り切れる(互いに素なら l c m \mathrm{lcm} lcm は積)。
∎
例 6.4 (孫子算経の問題 )
「3 3 3 で割ると 2 2 2 余り、5 5 5 で割ると 3 3 3 余り、7 7 7 で割ると 2 2 2 余る数は何か」(M = 105 M=105 M = 105 )。M 1 = 35 M_1=35 M 1 = 35 , M 2 = 21 M_2=21 M 2 = 21 , M 3 = 15 M_3=15 M 3 = 15 。35 y 1 ≡ 1 ( 3 ) 35y_1\equiv1\ (3) 35 y 1 ≡ 1 ( 3 ) から y 1 = 2 y_1=2 y 1 = 2 (70 = 69 + 1 70=69+1 70 = 69 + 1 )、21 y 2 ≡ 1 ( 5 ) 21y_2\equiv1\ (5) 21 y 2 ≡ 1 ( 5 ) から y 2 = 1 y_2=1 y 2 = 1 、15 y 3 ≡ 1 ( 7 ) 15y_3\equiv1\ (7) 15 y 3 ≡ 1 ( 7 ) から y 3 = 1 y_3=1 y 3 = 1 。x ≡ 2 ⋅ 35 ⋅ 2 + 3 ⋅ 21 ⋅ 1 + 2 ⋅ 15 ⋅ 1 = 140 + 63 + 30 = 233 ≡ 233 − 210 = 23 ( m o d 105 ) x\equiv2\cdot35\cdot2+3\cdot21\cdot1+2\cdot15\cdot1=140+63+30=233\equiv233-210=23\pmod{105} x ≡ 2 ⋅ 35 ⋅ 2 + 3 ⋅ 21 ⋅ 1 + 2 ⋅ 15 ⋅ 1 = 140 + 63 + 30 = 233 ≡ 233 − 210 = 23 ( mod 105 ) 。検算:23 = 3 ⋅ 7 + 2 = 5 ⋅ 4 + 3 = 7 ⋅ 3 + 2 23=3\cdot7+2=5\cdot4+3=7\cdot3+2 23 = 3 ⋅ 7 + 2 = 5 ⋅ 4 + 3 = 7 ⋅ 3 + 2 ✓。
中国剰余定理の最も重要な使い方は、「法を互いに素な因子に分けて別々に解き、あとで貼り合わせる」ことです。
系 6.5 (剰余の分解 ) ✓
m , n m,n m , n を互いに素な正の整数とする。写像
Θ : { 0 , 1 , … , m n − 1 } ⟶ { 0 , … , m − 1 } × { 0 , … , n − 1 } , x ⟼ ( x m o d m , x m o d n ) \Theta:\{0,1,\ldots,mn-1\}\longrightarrow\{0,\ldots,m-1\}\times\{0,\ldots,n-1\},\quad x\longmapsto(x\bmod m,\ x\bmod n) Θ : { 0 , 1 , … , mn − 1 } ⟶ { 0 , … , m − 1 } × { 0 , … , n − 1 } , x ⟼ ( x mod m , x mod n ) は全単射である。さらに Θ ( x + y ) = Θ ( x ) ⊕ Θ ( y ) \Theta(x+y)=\Theta(x)\oplus\Theta(y) Θ ( x + y ) = Θ ( x ) ⊕ Θ ( y ) , Θ ( x y ) = Θ ( x ) ⊙ Θ ( y ) \Theta(xy)=\Theta(x)\odot\Theta(y) Θ ( x y ) = Θ ( x ) ⊙ Θ ( y ) (成分ごとに m , n m,n m , n を法とする和・積)が成り立つ。
証明(系 6.5) 全射性は 定理 6.1 の存在(g = 1 g=1 g = 1 )、単射性は一意性(二つの x x x が同じ像をもてば m n mn mn を法として合同で、範囲が m n mn mn 個の連続する整数なので等しい)。和と積についての性質は、剰余を取る操作が和と積と両立すること(a ≡ a ′ , b ≡ b ′ a\equiv a',b\equiv b' a ≡ a ′ , b ≡ b ′ ならば a + b ≡ a ′ + b ′ a+b\equiv a'+b' a + b ≡ a ′ + b ′ , a b ≡ a ′ b ′ ab\equiv a'b' ab ≡ a ′ b ′ )から従う。
∎
定理の中の ⊕ \oplus ⊕ , ⊙ \odot ⊙ は、第 1 成分は m m m を法として、第 2 成分は n n n を法として、それぞれ足す・掛ける操作を表します。つまり、m n mn mn を法とする計算は、m m m を法とする計算と n n n を法とする計算に分けて行えます。
例えば m = 3 m=3 m = 3 , n = 5 n=5 n = 5 のとき、0 0 0 から 14 14 14 までの 15 個の数は、3 3 3 で割った余りと 5 5 5 で割った余りの組によって、次の表の 15 個の升目に重なりなくちょうど一つずつ入ります。
5 で割った余り 0 1 2 3 4 3 で割った 余り 0 余り 1 余り 2 0 6 12 3 9 10 1 7 13 4 5 11 2 8 14
m = 3, n = 5 のとき、0 から 14 の各数を (3 で割った余り, 5 で割った余り) の升目に置いた表。15 個の数が 15 個の升目を過不足なく埋める。
これを環の言葉で述べると、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 (環同型)です(定理 4.8[合同式とフェルマーの小定理] と 演習 8.2[イデアルと剰余環] も参照)。
命題 6.6 (合同方程式の解の個数の乗法性 ) ✓
f f f を整数係数の多項式、m , n m,n m , n を互いに素な正の整数とし、N ( k ) N(k) N ( k ) を合同方程式 f ( x ) ≡ 0 ( m o d k ) f(x)\equiv0\pmod k f ( x ) ≡ 0 ( mod k ) の { 0 , … , k − 1 } \{0,\ldots,k-1\} { 0 , … , k − 1 } における解の個数とする。このとき N ( m n ) = N ( m ) N ( n ) N(mn)=N(m)N(n) N ( mn ) = N ( m ) N ( n ) 。
証明(命題 6.6) f ( x ) ≡ 0 ( m o d m n ) f(x)\equiv0\pmod{mn} f ( x ) ≡ 0 ( mod mn ) は、m ∣ f ( x ) m\mid f(x) m ∣ f ( x ) かつ n ∣ f ( x ) n\mid f(x) n ∣ f ( x ) (互いに素なので 命題 2.4 より同値)。f f f の整数係数性から f ( x ) m o d m f(x)\bmod m f ( x ) mod m は x m o d m x\bmod m x mod m だけで決まる。系 6.5 により、x x x と ( x m o d m , x m o d n ) (x\bmod m,x\bmod n) ( x mod m , x mod n ) は一対一に対応し、x x x が解であることは x m o d m x\bmod m x mod m が m o d m \bmod\ m mod m の解かつ x m o d n x\bmod n x mod n が m o d n \bmod\ n mod n の解であることと同値。解の個数は N ( m ) ⋅ N ( n ) N(m)\cdot N(n) N ( m ) ⋅ N ( n ) 。
∎
例 6.7 (x² ≡ 1 (mod 15) )
N ( 3 ) = 2 N(3)=2 N ( 3 ) = 2 (x ≡ ± 1 x\equiv\pm1 x ≡ ± 1 )、N ( 5 ) = 2 N(5)=2 N ( 5 ) = 2 (x ≡ ± 1 x\equiv\pm1 x ≡ ± 1 )なので N ( 15 ) = 4 N(15)=4 N ( 15 ) = 4 。四通りの組 ( x m o d 3 , x m o d 5 ) = ( ± 1 , ± 1 ) (x\bmod3,x\bmod5)=(\pm1,\pm1) ( x mod 3 , x mod 5 ) = ( ± 1 , ± 1 ) を貼り合わせて、x = 1 , 4 , 11 , 14 x=1,4,11,14 x = 1 , 4 , 11 , 14 。確かめると 4 2 = 16 4^2=16 4 2 = 16 , 11 2 = 121 = 8 ⋅ 15 + 1 11^2=121=8\cdot15+1 1 1 2 = 121 = 8 ⋅ 15 + 1 , 14 2 = 196 = 13 ⋅ 15 + 1 14^2=196=13\cdot15+1 1 4 2 = 196 = 13 ⋅ 15 + 1 。素数でない法では、x 2 ≡ 1 x^2\equiv1 x 2 ≡ 1 の解が ± 1 \pm1 ± 1 だけとは限りません。
定義 7.1 (オイラー関数 ) ↗
正の整数 n n n に対し、φ ( n ) = # { k ∈ { 1 , … , n } ∣ gcd ( k , n ) = 1 } \varphi(n)=\#\{\,k\in\{1,\ldots,n\}\mid\gcd(k,n)=1\,\} φ ( n ) = # { k ∈ { 1 , … , n } ∣ g cd( k , n ) = 1 } をオイラー関数という。
φ ( 1 ) = 1 \varphi(1)=1 φ ( 1 ) = 1 , φ ( p ) = p − 1 \varphi(p)=p-1 φ ( p ) = p − 1 (素数 p p p ), φ ( 12 ) = 4 \varphi(12)=4 φ ( 12 ) = 4 (1 , 5 , 7 , 11 1,5,7,11 1 , 5 , 7 , 11 )。この関数は Z / n Z \mathbb{Z}/n\mathbb{Z} Z / n Z の可逆元の個数でもあります(定義 4.6[合同式とフェルマーの小定理] )。
補題 7.2 (積と互いに素 ) ✓
m , n m,n m , n を正の整数、x x x を整数とすると、gcd ( x , m n ) = 1 ⟺ gcd ( x , m ) = 1 \gcd(x,mn)=1\iff\gcd(x,m)=1 g cd( x , mn ) = 1 ⟺ g cd( x , m ) = 1 かつ gcd ( x , n ) = 1 \gcd(x,n)=1 g cd( x , n ) = 1 。また gcd ( x , n ) = gcd ( x m o d n , n ) \gcd(x,n)=\gcd(x\bmod n,\,n) g cd( x , n ) = g cd( x mod n , n ) である。
証明(補題 7.2) gcd ( x , m n ) > 1 \gcd(x,mn)>1 g cd( x , mn ) > 1 とすると、素数 p p p が x x x と m n mn mn を割り切る。ユークリッドの補題で p ∣ m p\mid m p ∣ m または p ∣ n p\mid n p ∣ n となり、gcd ( x , m ) > 1 \gcd(x,m)>1 g cd( x , m ) > 1 または gcd ( x , n ) > 1 \gcd(x,n)>1 g cd( x , n ) > 1 。逆は明らか。後半は、x = n q + r x=nq+r x = n q + r のとき x x x と n n n の公約数の集合が r r r と n n n の公約数の集合に一致すること(定理 3.2 の証明の最初の段落)による。
∎
定理 7.3 (オイラー関数の乗法性と公式 ) ✓
m , n m,n m , n が互いに素ならば φ ( m n ) = φ ( m ) φ ( n ) \varphi(mn)=\varphi(m)\varphi(n) φ ( mn ) = φ ( m ) φ ( n ) 。
素数 p p p と k ≥ 1 k\ge1 k ≥ 1 について φ ( p k ) = p k − p k − 1 \varphi(p^k)=p^k-p^{k-1} φ ( p k ) = p k − p k − 1 。
n = ∏ i = 1 k p i e i n=\prod_{i=1}^kp_i^{e_i} n = ∏ i = 1 k p i e i (p i p_i p i は相異なる素数、e i ≥ 1 e_i\ge1 e i ≥ 1 )ならば φ ( n ) = ∏ i = 1 k p i e i − 1 ( p i − 1 ) = n ∏ i = 1 k ( 1 − 1 p i ) \varphi(n)=\prod_{i=1}^kp_i^{e_i-1}(p_i-1)=n\prod_{i=1}^k\Bigl(1-\dfrac1{p_i}\Bigr) φ ( n ) = ∏ i = 1 k p i e i − 1 ( p i − 1 ) = n ∏ i = 1 k ( 1 − p i 1 ) 。
証明(定理 7.3) (1) 系 6.5 の Θ \Theta Θ を考える。x ∈ { 0 , … , m n − 1 } x\in\{0,\ldots,mn-1\} x ∈ { 0 , … , mn − 1 } について、補題 7.2 により gcd ( x , m n ) = 1 ⟺ gcd ( x m o d m , m ) = 1 \gcd(x,mn)=1\iff\gcd(x\bmod m,m)=1 g cd( x , mn ) = 1 ⟺ g cd( x mod m , m ) = 1 かつ gcd ( x m o d n , n ) = 1 \gcd(x\bmod n,n)=1 g cd( x mod n , n ) = 1 。つまり Θ \Theta Θ は gcd ( x , m n ) = 1 \gcd(x,mn)=1 g cd( x , mn ) = 1 を満たす x x x の集合を、{ u ∣ gcd ( u , m ) = 1 } × { v ∣ gcd ( v , n ) = 1 } \{u\mid\gcd(u,m)=1\}\times\{v\mid\gcd(v,n)=1\} { u ∣ g cd( u , m ) = 1 } × { v ∣ g cd( v , n ) = 1 } へ全単射で写す({ 0 , … , m n − 1 } \{0,\ldots,mn-1\} { 0 , … , mn − 1 } と { 1 , … , m n } \{1,\ldots,mn\} { 1 , … , mn } は 0 ↔ m n 0\leftrightarrow mn 0 ↔ mn を除いて同じで、gcd ( 0 , m n ) = m n > 1 \gcd(0,mn)=mn>1 g cd( 0 , mn ) = mn > 1 , gcd ( m n , m n ) > 1 \gcd(mn,mn)>1 g cd( mn , mn ) > 1 なので数え方に影響しない。m = n = 1 m=n=1 m = n = 1 のときは自明)。個数を比べて φ ( m n ) = φ ( m ) φ ( n ) \varphi(mn)=\varphi(m)\varphi(n) φ ( mn ) = φ ( m ) φ ( n ) 。
(2) 1 , … , p k 1,\ldots,p^k 1 , … , p k のうち p k p^k p k と互いに素でないものは p p p の倍数で、その個数は p k − 1 p^{k-1} p k − 1 。
(3) (1)(2) と 定理 5.2 から従う(互いに素な素数べきへの分解を使い、k k k に関する帰納法)。p i e i − 1 ( p i − 1 ) = p i e i ( 1 − 1 / p i ) p_i^{e_i-1}(p_i-1)=p_i^{e_i}(1-1/p_i) p i e i − 1 ( p i − 1 ) = p i e i ( 1 − 1/ p i ) 。
∎
例 7.4 (φ の計算 )
φ ( 360 ) \varphi(360) φ ( 360 ) :360 = 2 3 ⋅ 3 2 ⋅ 5 360=2^3\cdot3^2\cdot5 360 = 2 3 ⋅ 3 2 ⋅ 5 なので 360 ⋅ 1 2 ⋅ 2 3 ⋅ 4 5 = 96 360\cdot\frac12\cdot\frac23\cdot\frac45=96 360 ⋅ 2 1 ⋅ 3 2 ⋅ 5 4 = 96 。φ ( 1001 ) \varphi(1001) φ ( 1001 ) :1001 = 7 ⋅ 11 ⋅ 13 1001=7\cdot11\cdot13 1001 = 7 ⋅ 11 ⋅ 13 で 6 ⋅ 10 ⋅ 12 = 720 6\cdot10\cdot12=720 6 ⋅ 10 ⋅ 12 = 720 。
定理 7.5 (約数についての和 ) ✓
正の整数 n n n について ∑ d ∣ n φ ( d ) = n \displaystyle\sum_{d\mid n}\varphi(d)=n d ∣ n ∑ φ ( d ) = n (和は n n n の正の約数 d d d 全体)。
証明(定理 7.5) { 1 , … , n } \{1,\ldots,n\} { 1 , … , n } を、gcd ( k , n ) \gcd(k,n) g cd( k , n ) の値で分類する。gcd ( k , n ) \gcd(k,n) g cd( k , n ) は n n n の約数だから、d ∣ n d\mid n d ∣ n ごとに S d = { k ∈ { 1 , … , n } ∣ gcd ( k , n ) = n / d } S_d=\{k\in\{1,\ldots,n\}\mid\gcd(k,n)=n/d\} S d = { k ∈ { 1 , … , n } ∣ g cd( k , n ) = n / d } とおくと、S d S_d S d (d ∣ n d\mid n d ∣ n ) は { 1 , … , n } \{1,\ldots,n\} { 1 , … , n } の分割になる。k ∈ S d k\in S_d k ∈ S d は k = ( n / d ) j k=(n/d)j k = ( n / d ) j (1 ≤ j ≤ d 1\le j\le d 1 ≤ j ≤ d ) と書け、gcd ( k , n ) = ( n / d ) gcd ( j , d ) \gcd(k,n)=(n/d)\gcd(j,d) g cd( k , n ) = ( n / d ) g cd( j , d ) だから、条件 gcd ( k , n ) = n / d \gcd(k,n)=n/d g cd( k , n ) = n / d は gcd ( j , d ) = 1 \gcd(j,d)=1 g cd( j , d ) = 1 と同値。よって k ↦ j k\mapsto j k ↦ j は S d S_d S d から { j ∈ { 1 , … , d } ∣ gcd ( j , d ) = 1 } \{j\in\{1,\ldots,d\}\mid\gcd(j,d)=1\} { j ∈ { 1 , … , d } ∣ g cd( j , d ) = 1 } への全単射で、∣ S d ∣ = φ ( d ) |S_d|=\varphi(d) ∣ S d ∣ = φ ( d ) 。両辺の個数を比べて n = ∑ d ∣ n ∣ S d ∣ = ∑ d ∣ n φ ( d ) n=\sum_{d\mid n}|S_d|=\sum_{d\mid n}\varphi(d) n = ∑ d ∣ n ∣ S d ∣ = ∑ d ∣ n φ ( d ) 。
∎
例 7.6 (n = 12 での確認 )
12 12 12 の約数は 1 , 2 , 3 , 4 , 6 , 12 1,2,3,4,6,12 1 , 2 , 3 , 4 , 6 , 12 で φ = 1 , 1 , 2 , 2 , 2 , 4 \varphi=1,1,2,2,2,4 φ = 1 , 1 , 2 , 2 , 2 , 4 。和は 12 12 12 ✓。S 12 = { 1 , 5 , 7 , 11 } S_{12}=\{1,5,7,11\} S 12 = { 1 , 5 , 7 , 11 } (gcd = 1 \gcd=1 g cd= 1 )、S 6 = { 2 , 10 } S_6=\{2,10\} S 6 = { 2 , 10 } (gcd = 2 \gcd=2 g cd= 2 )、S 4 = { 3 , 9 } S_4=\{3,9\} S 4 = { 3 , 9 } 、S 3 = { 4 , 8 } S_3=\{4,8\} S 3 = { 4 , 8 } 、S 2 = { 6 } S_2=\{6\} S 2 = { 6 } 、S 1 = { 12 } S_1=\{12\} S 1 = { 12 } 。
演習 8.1 易
gcd ( 1071 , 462 ) \gcd(1071,462) g cd( 1071 , 462 ) を互除法で求め、1071 x + 462 y = gcd ( 1071 , 462 ) 1071x+462y=\gcd(1071,462) 1071 x + 462 y = g cd( 1071 , 462 ) の整数解 ( x , y ) (x,y) ( x , y ) を一組求めよ。
解答 1071 = 2 ⋅ 462 + 147 1071=2\cdot462+147 1071 = 2 ⋅ 462 + 147 , 462 = 3 ⋅ 147 + 21 462=3\cdot147+21 462 = 3 ⋅ 147 + 21 , 147 = 7 ⋅ 21 + 0 147=7\cdot21+0 147 = 7 ⋅ 21 + 0 。gcd = 21 \gcd=21 g cd= 21 。逆にたどって 21 = 462 − 3 ⋅ 147 = 462 − 3 ( 1071 − 2 ⋅ 462 ) = 7 ⋅ 462 − 3 ⋅ 1071 21=462-3\cdot147=462-3(1071-2\cdot462)=7\cdot462-3\cdot1071 21 = 462 − 3 ⋅ 147 = 462 − 3 ( 1071 − 2 ⋅ 462 ) = 7 ⋅ 462 − 3 ⋅ 1071 。よって ( x , y ) = ( − 3 , 7 ) (x,y)=(-3,7) ( x , y ) = ( − 3 , 7 ) (確認:− 3213 + 3234 = 21 -3213+3234=21 − 3213 + 3234 = 21 )。
演習 8.2 標準
連立合同式 x ≡ 1 ( m o d 4 ) x\equiv1\pmod 4 x ≡ 1 ( mod 4 ) , x ≡ 2 ( m o d 9 ) x\equiv2\pmod 9 x ≡ 2 ( mod 9 ) , x ≡ 3 ( m o d 25 ) x\equiv3\pmod{25} x ≡ 3 ( mod 25 ) を解け( m o d 900 \bmod\ 900 mod 900 )。
解答 法 4 , 9 , 25 4,9,25 4 , 9 , 25 はどの二つも互いに素で M = 900 M=900 M = 900 。M 1 = 225 M_1=225 M 1 = 225 , M 2 = 100 M_2=100 M 2 = 100 , M 3 = 36 M_3=36 M 3 = 36 。225 y 1 ≡ 1 ( 4 ) 225y_1\equiv1\ (4) 225 y 1 ≡ 1 ( 4 ) :225 ≡ 1 225\equiv1 225 ≡ 1 なので y 1 = 1 y_1=1 y 1 = 1 。100 y 2 ≡ 1 ( 9 ) 100y_2\equiv1\ (9) 100 y 2 ≡ 1 ( 9 ) :100 ≡ 1 100\equiv1 100 ≡ 1 なので y 2 = 1 y_2=1 y 2 = 1 。36 y 3 ≡ 1 ( 25 ) 36y_3\equiv1\ (25) 36 y 3 ≡ 1 ( 25 ) :36 ≡ 11 36\equiv11 36 ≡ 11 , 11 ⋅ 16 = 176 = 7 ⋅ 25 + 1 11\cdot16=176=7\cdot25+1 11 ⋅ 16 = 176 = 7 ⋅ 25 + 1 なので y 3 = 16 y_3=16 y 3 = 16 。x ≡ 1 ⋅ 225 ⋅ 1 + 2 ⋅ 100 ⋅ 1 + 3 ⋅ 36 ⋅ 16 = 225 + 200 + 1728 = 2153 ≡ 2153 − 1800 = 353 ( m o d 900 ) x\equiv1\cdot225\cdot1+2\cdot100\cdot1+3\cdot36\cdot16=225+200+1728=2153\equiv2153-1800=353\pmod{900} x ≡ 1 ⋅ 225 ⋅ 1 + 2 ⋅ 100 ⋅ 1 + 3 ⋅ 36 ⋅ 16 = 225 + 200 + 1728 = 2153 ≡ 2153 − 1800 = 353 ( mod 900 ) 。検算:353 = 4 ⋅ 88 + 1 353=4\cdot88+1 353 = 4 ⋅ 88 + 1 , 353 = 9 ⋅ 39 + 2 353=9\cdot39+2 353 = 9 ⋅ 39 + 2 , 353 = 25 ⋅ 14 + 3 353=25\cdot14+3 353 = 25 ⋅ 14 + 3 ✓。
演習 8.3 標準
φ ( n ) = 12 \varphi(n)=12 φ ( n ) = 12 を満たす正の整数 n n n をすべて求めよ。
解答 素数 p ∣ n p\mid n p ∣ n について、φ ( n ) \varphi(n) φ ( n ) の素因数分解表示の因子 p e − 1 ( p − 1 ) p^{e-1}(p-1) p e − 1 ( p − 1 ) が φ ( n ) = 12 \varphi(n)=12 φ ( n ) = 12 を割る(定理 7.3 の積の各因子は正の整数)。よって p − 1 ∣ 12 p-1\mid12 p − 1 ∣ 12 から p ∈ { 2 , 3 , 5 , 7 , 13 } p\in\{2,3,5,7,13\} p ∈ { 2 , 3 , 5 , 7 , 13 } 、p e − 1 ∣ 12 p^{e-1}\mid12 p e − 1 ∣ 12 から指数は 2 a 2^a 2 a (a ≤ 3 a\le3 a ≤ 3 )、3 b 3^b 3 b (b ≤ 2 b\le2 b ≤ 2 )、5 , 7 , 13 5,7,13 5 , 7 , 13 は 1 1 1 乗まで。互いに素な部分の φ \varphi φ の積が 12 12 12 になる組を探す。値は φ ( 2 a ) ∈ { 1 , 1 , 2 , 4 } \varphi(2^a)\in\{1,1,2,4\} φ ( 2 a ) ∈ { 1 , 1 , 2 , 4 } (a = 0 , 1 , 2 , 3 a=0,1,2,3 a = 0 , 1 , 2 , 3 )、φ ( 3 b ) ∈ { 1 , 2 , 6 } \varphi(3^b)\in\{1,2,6\} φ ( 3 b ) ∈ { 1 , 2 , 6 } (b = 0 , 1 , 2 b=0,1,2 b = 0 , 1 , 2 )、φ ( 5 ) = 4 \varphi(5)=4 φ ( 5 ) = 4 、φ ( 7 ) = 6 \varphi(7)=6 φ ( 7 ) = 6 、φ ( 13 ) = 12 \varphi(13)=12 φ ( 13 ) = 12 。
13 ∣ n 13\mid n 13 ∣ n のとき:他の部分の φ \varphi φ の積は 1 1 1 。a ∈ { 0 , 1 } a\in\{0,1\} a ∈ { 0 , 1 } , b = 0 b=0 b = 0 で n = 13 , 26 n=13,26 n = 13 , 26 。
7 ∣ n 7\mid n 7 ∣ n , 13 ∤ n 13\nmid n 13 ∤ n のとき:他の部分の積は 2 2 2 。5 ∣ n 5\mid n 5 ∣ n なら因子 4 4 4 が入って不可。φ ( 2 a ) φ ( 3 b ) = 2 \varphi(2^a)\varphi(3^b)=2 φ ( 2 a ) φ ( 3 b ) = 2 を解くと ( φ ( 2 a ) , φ ( 3 b ) ) = ( 1 , 2 ) (\varphi(2^a),\varphi(3^b))=(1,2) ( φ ( 2 a ) , φ ( 3 b )) = ( 1 , 2 ) で a ∈ { 0 , 1 } a\in\{0,1\} a ∈ { 0 , 1 } , b = 1 b=1 b = 1 、または ( 2 , 1 ) (2,1) ( 2 , 1 ) で a = 2 a=2 a = 2 , b = 0 b=0 b = 0 。n = 7 ⋅ 3 = 21 n=7\cdot3=21 n = 7 ⋅ 3 = 21 , 7 ⋅ 6 = 42 7\cdot6=42 7 ⋅ 6 = 42 , 7 ⋅ 4 = 28 7\cdot4=28 7 ⋅ 4 = 28 。
7 , 13 ∤ n 7,13\nmid n 7 , 13 ∤ n のとき:5 ∣ n 5\mid n 5 ∣ n なら残りの積は 3 3 3 だが、{ 1 , 2 , 4 } × { 1 , 2 , 6 } \{1,2,4\}\times\{1,2,6\} { 1 , 2 , 4 } × { 1 , 2 , 6 } の積に 3 3 3 はない。5 ∤ n 5\nmid n 5 ∤ n なら φ ( 2 a ) φ ( 3 b ) = 12 \varphi(2^a)\varphi(3^b)=12 φ ( 2 a ) φ ( 3 b ) = 12 で、解は ( 2 , 6 ) (2,6) ( 2 , 6 ) すなわち a = 2 a=2 a = 2 , b = 2 b=2 b = 2 のみ。n = 36 n=36 n = 36 。
答:n = 13 , 21 , 26 , 28 , 36 , 42 n=13,21,26,28,36,42 n = 13 , 21 , 26 , 28 , 36 , 42 。
演習 8.4 標準
正の整数 a , b , c a,b,c a , b , c について gcd ( a , l c m ( b , c ) ) = l c m ( gcd ( a , b ) , gcd ( a , c ) ) \gcd(a,\mathrm{lcm}(b,c))=\mathrm{lcm}(\gcd(a,b),\gcd(a,c)) g cd( a , lcm ( b , c )) = lcm ( g cd( a , b ) , g cd( a , c )) を、付値を使って示せ。
解答 各素数 p p p で x = v p ( a ) x=v_p(a) x = v p ( a ) , y = v p ( b ) y=v_p(b) y = v p ( b ) , z = v p ( c ) z=v_p(c) z = v p ( c ) とおく。命題 5.3 (3) より左辺の指数は min ( x , max ( y , z ) ) \min(x,\max(y,z)) min ( x , max ( y , z )) 、右辺の指数は max ( min ( x , y ) , min ( x , z ) ) \max(\min(x,y),\min(x,z)) max ( min ( x , y ) , min ( x , z )) 。y ≤ z y\le z y ≤ z の場合は min ( x , z ) \min(x,z) min ( x , z ) と max ( min ( x , y ) , min ( x , z ) ) = min ( x , z ) \max(\min(x,y),\min(x,z))=\min(x,z) max ( min ( x , y ) , min ( x , z )) = min ( x , z ) (min ( x , y ) ≤ min ( x , z ) \min(x,y)\le\min(x,z) min ( x , y ) ≤ min ( x , z ) なので)で一致し、y > z y>z y > z の場合も対称。すべての p p p で指数が一致するので、定理 5.2 の一意性により両辺は等しい。
高木貞治『初等整数論講義』第 2 版、共立出版、1971 — 第 1 章(整除、最大公約数)、第 2 章(合同式、中国剰余定理)。
G. H. Hardy and E. M. Wright, An Introduction to the Theory of Numbers , 6th ed., Oxford University Press, 2008 — 第 2 章(基本定理)、第 5 章(オイラー関数)。
K. Ireland and M. Rosen, A Classical Introduction to Modern Number Theory , 2nd ed., Springer GTM 84, 1990 — 第 1 章、第 2 章。
D. E. Knuth, The Art of Computer Programming , Vol. 2, 3rd ed., Addison-Wesley, 1997 — 4.5.2 節(ユークリッドの互除法の解析。ラメの定理)。
G. Lamé, “Note sur la limite du nombre des divisions dans la recherche du plus grand commun diviseur entre deux nombres entiers”, Comptes Rendus de l’Académie des Sciences 19 (1844), 867–870.