整数論入門
整数と素数
0 および自然数および自然数を -1 倍して得られる数を整数と呼ぶ。
- Z = { ・・・, -2, -1, 0, 1, 2, ・・・}.
2つの整数 a, b について、b が a をわるとは、
とかけることをいう。このとき、
と呼ぶ。
整数 p が約数として 1 と p しかもたないとき、それを素数と呼ぶ。
整数論の基本定理:
任意の整数 n は
と素数の積に(並べ替えを除いて)ただ一通りにかける。
2つの整数 a, b の共通の約数(公約数)のうち最大のものを最大公約数と呼び、
とかく。
2つの整数 a, b について、その最大公約数 gcd(a,b) が 1 に等しいとき、a と b は互いに素であるという。
2つの整数 a, b の共通の正の倍数(公倍数)のうち最小のものを最小公倍数と呼び、
とかく。
最大公約数と最小公倍数の対は、もとの整数対の「再分配」を与える:
2つの整数 a, b について、
合同式
正の整数 n と2つの整数a, bについて、a が n を法として b に合同であるとは
こと、すなわち、
とかけることをいう。
a が n を法として b に合同であることを
とかく。
合同式の性質1:
- a ≡ a' (mod n) 、b ≡ b' (mod n)
ならば
- a + b ≡ a' + b' (mod n)
- a ・ b ≡ a' ・ b' (mod n)
合同式の性質2:
gcd(a, n) = 1 ならば
と
は同値(一方が成り立てば他方も成り立つ)である。
例(合同式):
- 32 ≡ 2 (mod 15) (1)
- 21 ≡ 6 (mod 15) (2)
式(1), (2)の辺々を加えて
式(1), (2)の辺々かけると
式(1)の両辺を2でわると
式(2)の両辺を3でわっても
- 7 2 (mod 15).
ユークリッドの互除法
整数 a を整数 b でわった余りを a mod b とかく。
- gcd(a, b) = gcd(b, a mod b).
ユークリッドの互除法:
a ≧ b ≧ 0 なる2つの整数 a, b について、整数列 r0, r1, ・・・, rl+1 を
- r0 = a
- r1 = b
- r2 = r0 mod r1
- ・・・
- ri+1 = ri-1 mod ri
- ・・・
- rl = rl-2 mod rl-1
- rl+1 = rl-1 mod rl = 0
とすると、
- rl = gcd(a, b)
- l ≦ log(b)/log(φ) + 1
が成り立つ。φ = (1+51/2)/2 ≒ 1.62 は黄金比。
例(ユークリッドの互除法):
a = 100, b = 35 の最大公約数をユークリッドの互除法で求める。
i |
0 |
1 |
2 |
3 |
4 |
ri |
100 |
35 |
30 |
5 |
0 |
qi |
- |
2 |
1 |
6 |
- |
ここで、qi = ri-1 ÷ ri .
0 になる直前は r3 なので、
さらに、「逆数」を計算したければ、拡張ユークリッドの互除法が必要。
拡張ユークリッドの互除法:
a ≧ b ≧ 0 なる2つの整数 a, b について、整数列 r0, r1, ・・・, rl+1と整数列 q1, ・・・, ql をユークリッドの互除法と同様に定める。さらに、整数列 s0, ・・・, sl+1と整数列 t0, ・・・, tl+1を以下のように定める。
- s0 = 1, t0 = 0
- s1 = 0, t1 = 1
i = 1, ・・・, l について
- si+1 = si-1 - si qi
- ti+1 = ti-1 - ti qi
このとき、
となる。
注意
常に si a + ti b = ri となっている。
例(拡張ユークリッドの互除法):
a = 100, b = 35 の最大公約数を拡張ユークリッドの互除法で求める。
i |
0 |
1 |
2 |
3 |
4 |
ri |
100 |
35 |
30 |
5 |
0 |
qi |
- |
2 |
1 |
6 |
- |
si |
1 |
0 |
1 |
-1 |
7 |
ti |
0 |
1 |
-2 |
3 |
20 |
0 になる直前は r3 = 5 で、s3 = -1, t3 = 3 なので、
- gcd(100,35) = 5 = 100 (-1) + 35 3.
例(逆数演算):
16-1 mod 25 を求める。
n = 25, a = 16 に拡張ユークリッドの互除法を用いると
i |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
ri |
25 |
16 |
9 |
7 |
2 |
1 |
0 |
qi |
- |
1 |
1 |
1 |
3 |
2 |
- |
si |
1 |
0 |
1 |
-1 |
2 |
-7 |
- |
ti |
0 |
1 |
-1 |
2 |
-3 |
11 |
- |
よって、
- gcd(25,16) = 1 = (-7) 25 + 11 16.
とくに
オイラーの定理
正整数 n について、1 以上 (n-1) 以下の整数のうちで n と互いに素なものの個数をφ(n)とかく。φはオイラー関数と呼ばれる。
オイラー関数の性質:
- 素数 p に対し、φ(pe) = pe - pe-1.
- n と m が互いに素ならば、φ(n・m) = φ(n)・φ(m).
オイラー関数は整数を「滅失」する:
オイラーの定理:
正整数 n について、nとは互いに素などんな整数 a についても
が成り立つ。
とくに, 素数を法とするときは
フェルマーの小定理:
素数pで割り切れないどんな整数 a についても
が成り立つ。
n = p q が異なる素数p, qの積であるとき、pでもqでも割り切れない、どんな整数aについても
となる。
例:
n = 5, a = 2
- φ(5) = 4.
- 2 は 5 で割り切れない。
- 24 ≡ 1 (mod 5).
n = 15, a = 7
- φ(15) = (5-1)・(3-1) = 8.
- 7 は 15 と互いに素。
- 78 ≡ 1 (mod 15)
素数テスト
ミラー・ラビンテスト:
入力: 3以上の奇数 n
- n - 1 = 2k m (m: 奇数)となる k, m を求める。
- 1 以上 n-1 以下の整数 a をランダムに選択。
- gcd(n, a) > 1 ならば Reject。
- x ← am mod n
- x ≡ 1 (mod n) ならば、Accept。
- for j ∈ [0..(k-1)] :
- x ≡ -1 (mod n) ならば、Accept。
- そうでないならば、x ← x2 mod n
- Reject.
n が素数のとき
- Pr[ ミラー・ラビンテスト(n) = Accept ] = 1.
n が合成数のとき
- Pr[ ミラー・ラビンテスト(n) = Reject ] ≧ 3/4.
実は、
Primes ∈ P.
最終更新:2010年05月07日 19:59