[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/14 11:14 / Filesize : 500 KB / Number-of Response : 993
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

代数的整数論 004



1 名前:132人目の素数さん [2006/11/23(木) 21:57:04 ]
Kummer ◆g2BU0D6YN2氏が代数的整数論を語るスレです。

前スレ
science4.2ch.net/test/read.cgi/math/1141019088/

862 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 06:46:03 ]
命題
p を有理素数とする。
n ≧ 1 と a を 有理整数でそれぞれ p で割れないとする。
x^n ≡ a (mod p) が解 b を持つとする。

このとき、任意の e ≧ 1 に対して x^n ≡ a (mod p^e) が
c ≡ b (mod p) となる根 c を持つ。
このような c は mod p^e で一意に決まる。

証明
x^n ≡ a (mod p) の解を b とする。
f(X) = X^n - a とおく。
仮定より f '(b) = nb^(n-1) は p で割れない。
よって本命題は >>99 から得られる。
証明終

863 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 07:49:46 ]
命題
p を奇素数とする。
a を 有理整数で a は p で割れないとする。

n ≧ 1、e ≧ 1 に対して x^n ≡ a (mod p^e) が解を持つためには
a^(φ(p^e)/d) ≡ 1 (mod p^e) が必要十分である。
ここで、d = gcd(n, φ(p^e)) である。

x^n ≡ a (mod p^e) が解を持つなら、その個数は d である。

証明
>>820 より (Z/p^eZ)^* は巡回群である。
よって本命題は >>860>>861 から出る。

864 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 08:02:49 ]
>>863 において n が p で割れないときはもっと良い結果が得られる。

命題
p を奇素数とする。
n ≧ 1 と a を 有理整数でそれぞれ p で割れないとする。

x^n ≡ a (mod p) が解を持つためには
a^((p - 1)/d) ≡ 1 (mod p) が必要十分である。
ここで、d = gcd(n, p - 1) である。

x^n ≡ a (mod p) が解を持たないとする。
このとき、任意の e ≧ 1 に対して x^n ≡ a (mod p^e) も
解を持たない。

x^n ≡ a (mod p) が解を持つなら、
任意の e ≧ 1 に対して x^n ≡ a (mod p^e) も解を持ち、
その個数は d = gcd(n, p - 1) である。

証明
最初の主張は >>863 より出る。

残りの主張は >>862 より出る。

865 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 09:05:48 ]
>>862 は p = 2 でも成り立つから >>864 も p = 2 で成り立つ。

従って、n ≧ 1 と a が奇数のとき
任意の e ≧ 1 に対して x^n ≡ a (mod 2^e) は
唯一の解を持つ。

866 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 10:05:06 ]
>>864 より次の命題が直ちに得られる。

命題
p を奇素数とする。
a を 有理整数で a は p で割れないとする。

(a/p) = 1 なら、任意の e ≧ 1 に対して x^2 ≡ a (mod p^e) が
解を持つ。このとき、解の個数は2である。
ここで (a/p) は Legendre の記号(前スレ3の746)である。

逆に、ある e ≧ 1 に対して x^2 ≡ a (mod p^e) が解を持つなら
(a/p) = 1 である。

867 名前:132人目の素数さん mailto:sage [2007/03/10(土) 13:50:22 ]
解析的整数論ってなんかかっこいいよね

868 名前:132人目の素数さん mailto:sage [2007/03/10(土) 18:57:17 ]
ζ関数、多重ゼータ値、保型形式など

869 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:04:00 ]
22

870 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:05:00 ]
21



871 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:06:00 ]
20

872 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:07:00 ]
19

873 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:08:00 ]
18

874 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 20:08:33 ]
[Gauss: Disquisitiones, art.102]
今度は p を奇素数として a が p で割れるときに
x^2 ≡ a (mod p^n) を考える。
a = (p^k)b, gcd(b, p) = 1 とする。

1) k ≧ n のとき
a ≡ 0 (mod p^n) であるから
x^2 ≡ a (mod p^n) は解 x = 0 を持つ。

2) 1≦ k < n で k が奇数のとき
x^2 ≡ a (mod p^n) は解を持たない。

証明
x^2 ≡ a (mod p^n) が解 x = c を持つとする。
c^2 ≡ (p^k)b (mod p^n) より c^2 は p^k で割れる。
c = (p^s)d, gcd(d, p) = 1 とする。
k = 2t + 1 とすると、2s ≧ 2t + 1 だから s ≧ t + 1
よって c^2 は 2t + 2 で割れる。
c^2 ≡ (p^k)b (mod p^n) で 2t + 2 ≦ n だから
(p^(2t + 1))b ≡ 0 (mod p^(2t + 2))
よって b ≡ 0 (mod p) となり矛盾である。

3) 1≦ k < n で k が偶数のとき
x^2 ≡ a (mod p^n) が解を持つためには、(b/p) = 1 が
必要十分である。

証明
k = 2s とする。
x^2 ≡ (p^(2s))b (mod p^n)
x = (p^s)y とおくと
y^2 ≡ b (mod p^(n - k))
これと >>866 より上記の主張が出る。

875 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:09:00 ]
17

876 名前:132人目の素数さん mailto:sage [2007/03/10(土) 20:10:00 ]
17

877 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 20:16:13 ]
>>874 は簡単だが、あまり他では言及されてない。


878 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 21:17:02 ]
[Gauss: Disquisitiones, art.104]
>>874 の 1) と 3) における(互いに合同でない)解の個数を求める。
条件を再度述べる。
p を奇素数として a が p で割れるときに
x^2 ≡ a (mod p^n) を考える。
a = (p^k)b, gcd(b, p) = 1 とする。

1) k ≧ n のとき
n が偶数のとき n = 2m
n が奇数のとき n = 2m - 1 とおく。
x^2 ≡ a (mod p^n) より
x^2 ≡ 0 (mod p^n) となる。
よって x ≡ 0 (mod p^m) となる。

0, p^m, 2p^m, ..., (p^(n - m) - 1)p^m
の p^(n - m) 個が解である。

3) 1≦ k < n で k が偶数で、(b/p) = 1 のとき。
k = 2s とする。
x^2 ≡ (p^(2s))b (mod p^n)
x = (p^s)y とおくと
y^2 ≡ b (mod p^(n - 2s))
この解の一つを v とする。

v(p^s),
(v + p^(n - 2s))(p^s) = v(p^s) + p^(n - s),
... ,
(v + (p^s - 1)p^(n - 2s))(p^s) = v(p^s) + (p^s - 1)p^(n - s)
の p^s 個が v から得られる解である。

y^2 ≡ b (mod p^(n - 2s)) のもう一つの解 v' も同様であるから、
合計 2(p^s) 個 の解が得られる。

879 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 23:07:15 ]
a を奇数として合同方程式
x^2 ≡ a (mod 2^n) を考える。

まず x^2 ≡ a (mod 2) は唯一つの解 x ≡ 1 (mod 2) を持つ。

次に x^2 ≡ a (mod 4) を考える。
a が奇数だから x も奇数である。
x = 2k + 1 とすると x^2 = 4k^2 + 4k + 1 だから
x^2 ≡ 1 (mod 4) である。
よって a ≡ 1 (mod 4) である。
よって x^2 ≡ a (mod 4) に解があるためには a ≡ 1 (mod 4) が
必要十分である。
このとき解は x ≡ 1 (mod 4) と x ≡ 3 (mod 4) の2個である。

次に x^2 ≡ a (mod 8) を考える。
a が奇数だから x も奇数である。
x = 4k ± 1 とすると、 x^2 = 16k^2 ± 8k + 1 だから
x^2 ≡ 1 (mod 8) である。
よって x^2 ≡ a (mod 8) に解があるためには a ≡ 1 (mod 8) が
必要十分である。
このとき解は x ≡ 1 (mod 8) と x ≡ 3 (mod 8)
x ≡ 5 (mod 8), x ≡ 7 (mod 8)
の4個である。

880 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 23:23:47 ]
[Dirichlet の整数論講義より]

今度は n ≧ 3 のとき a を奇数として合同方程式
x^2 ≡ a (mod 2^n) を考える。

x^2 ≡ a (mod 2^n) に解 c があるとする。
c^2 - a = (2^n)h とする。

x = c + (2^(n-1))y とおく。
x^2 = c^2 + (2^n)cy + (2^(2n-2))y^2
x^2 - a = (2^n)h + (2^n)cy + (2^(2n-2))y^2

n ≧ 3 だから 2n - 2 ≧ n + 1
よって
x^2 - a ≡ (2^n)(h + cy) (mod 2^(n+1))
よって h + cy ≡ 0 (mod 2) なら
x^2 ≡ a (mod 2^(n+1))
である。
c が奇数だから h + cy ≡ 0 (mod 2) となる y は存在する。

以上から x^2 ≡ a (mod 2^n) に解があれば、
x^2 ≡ a (mod 2^(n+1)) に解があることがわかった。



881 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 23:41:34 ]
命題
n ≧ 3 で a を奇数とする。
x^2 ≡ a (mod 2^n) に解があるためには、
a ≡ 1 (mod 8) が必要十分である。

証明
>>879>>880 より明らかである。

882 名前:Kummer ◆g2BU0D6YN2 [2007/03/10(土) 23:56:30 ]
命題
n ≧ 3 で a を奇数とする。
a ≡ 1 (mod 8) のとき
x^2 ≡ a (mod 2^n) には4個の解がある。

証明(Dirichlet の整数論講義)
x^2 ≡ a (mod 2^n) の解の一つを c とする。
x をこの方程式の任意の解とする。

(x - c)(x + c) ≡ 0 (mod 2^n) である。
x も c も奇数であるから x - c と x + c は偶数である。
よって
((x - c)/2)((x + c)/2) ≡ 0 (mod 2^(n-2)) である。

(x + c)/2 - (x - c)/2 = c は奇数だから
(x - c)/2 と (x + c)/2 のどちらか一方は奇数である。
よって
(x - c)/2 ≡ 0 (mod 2^(n-2))
または
(x + c)/2 ≡ 0 (mod 2^(n-2))
である。

つまり
x ≡ c (mod 2^(n-1))
または
x ≡ -c (mod 2^(n-1))

よって
x ≡ c (mod 2^n) または x ≡ c + 2^(n-1) (mod 2^n)
x ≡ -c (mod 2^n) または x ≡ -c + 2^(n-1) (mod 2^n)
証明終

883 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 00:27:05 ]
今度は a が偶数のときに
x^2 ≡ a (mod 2^n) を考える。

命題
a を偶数で a = (2^k)b, gcd(b, 2) = 1 とする。
n が偶数のとき n = 2m
n が奇数のとき n = 2m - 1 とおく。

k ≧ n のとき x^2 ≡ a (mod 2^n) は 2^(n - m) 個の解をもつ。

証明
k ≧ n だから a ≡ 0 (mod 2^n) である。
よって x^2 ≡ 0 (mod 2^n) となる。
よって x ≡ 0 (mod 2^m) となる。

0, 2^m, 2(2^m), ..., (2^(n - m) - 1)2^m
の 2^(n - m) 個が解である。
証明終

884 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 00:37:31 ]
命題
a を偶数で a = (2^k)b, gcd(b, 2) = 1 とする。
1≦ k < n で k が奇数のとき
x^2 ≡ a (mod 2^n) は解を持たない。

証明
>>874 と同様だが一応証明する。

x^2 ≡ a (mod 2^n) が解 x = c を持つとする。
c^2 ≡ (2^k)b (mod 2^n) より c^2 は 2^k で割れる。
c = (2^s)d, gcd(d, 2) = 1 とする。
k = 2t + 1 とすると、2s ≧ 2t + 1 だから s ≧ t + 1
よって c^2 は 2t + 2 で割れる。
c^2 ≡ (2^k)b (mod 2^n) で 2t + 2 ≦ n だから
(2^(2t + 1))b ≡ 0 (mod 2^(2t + 2))
よって b ≡ 0 (mod 2) となり矛盾である。
証明終

885 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 00:49:27 ]
命題
a を偶数で a = (2^k)b, gcd(b, 2) = 1 とする。
1 ≦ k < n で k が偶数のとき
x^2 ≡ a (mod 2^n) が解を持つためには、

n = k + 1 のときは無条件
n = k + 2 のとき b ≡ 1 (mod 4)
n ≧ k + 3 のとき b ≡ 1 (mod 8)
が必要十分である。

証明
k = 2s とする。
x^2 ≡ (2^(2s))b (mod 2^n)
x = (2^s)y とおくと
y^2 ≡ b (mod 2^(n - k))

これと >>879 より上記の主張が出る。
証明

886 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 00:57:22 ]
命題
a を偶数で a = (2^k)b, gcd(b, 2) = 1 とする。
1 ≦ k < n で k = 2s が偶数とする。
x^2 ≡ a (mod 2^n) が解を持つとき、その個数は

n = k + 1 のときは 2^s 個
n = k + 2 のとき 2^(s+1) 個
n ≧ k + 3 のとき 2^(s+2) 個
である。

証明
>>885 より >>878 の 3) と同様にすればよい。

887 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 01:06:23 ]
以上で合同方程式 x^2 ≡ a (mod p^n) の解の様子はわかった。
a が p で割れる場合と p = 2 の場合も扱うと(難しくはないが)煩雑である。

888 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 02:07:07 ]
p を奇素数とし gcd(a, p) = 1 のとき
x^2 ≡ a (mod p) に解があるかどうかを決定するには、
Legendre の記号(前スレ3の746) (a/p) を計算すればよい。

(a/p) を計算する一つの方法は、
(a/p) ≡ a^((p - 1)/2) (mod p) (前スレ3の747)
を使う。
p が大きいとき、この方法は効率が悪いように見えるが
実はそうでもない。
後で述べるが a^((p - 1)/2) を計算機で計算するのに効率のよい
アルゴリズムがある。

(a/p) を計算する別の方法としては、a の素因数分解と
平方剰余の相互律(前スレ3の751)を使うものがある。

この方法は具体例で示したほうが分かりやすい。
p = 997 として (588/997) を計算してみよう。
588 = (7^2)・3・2^2 だから
(588/997) = (7^2/997)(3/997)(2^2/997) = (3/997)

997 ≡ 1 (mod 4) だから平方剰余の相互律より
(3/997) = (997/3) = (1/3) = 1 である。

よって (588/997) = 1
実際 183^2 ≡ 588 (mod 997)

しかし、この方法は a の素因数分解が必要なので、大きい数の
計算には不向きである。
この不都合は次にのべる Jacobi の記号により解消される。

889 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 09:32:19 ]
a を任意の有理整数とする。
>>100 を f(X) = X^2 - a に適用することにより、
x^2 ≡ a (mod m) の解は
各 x^2 ≡ a (mod (p_i)^(k_i)) の解が分かればよい。
しかし、この形の合同方程式の解の個数とその解法は原理的には
解決済みである(>>887)。
よって x^2 ≡ a (mod m) の解の個数と解法(中国式剰余定理を使う)も
解決されたとみてよい。

890 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 09:37:35 ]
n > 1 を奇数で n = (p_1)(p_2)... をその素因数分解とする。
m を gcd(m, n) = 1 となる任意の有理整数としたとき (m/n) を

(m/n) = (m/p_1)(m/p_2)...

と定義する。

(m/n) を Jacobi の記号という。

n が素数のときは (m/n) は Legendre の記号である。
よって Jacobi の記号は Legendre の記号の拡張になっている。

x^2 ≡ m (mod n) に解があるのは n の各素因数 p に対して
(m/p) = 1 となることが必要十分である(>>866, >>889)。
ところが、(m/p) = -1 となる p が偶数個あっても (m/n) = 1 となる。
よって、(m/n) = 1 であっても x^2 ≡ m (mod n) に解があるとは
限らない。



891 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 09:48:36 ]
命題
a ≡ b (mod n) なら (a/n) = (b/n) である。

証明
n = Π p を n の素因数分解とする。

a ≡ b (mod p) だから (a/p) = (b/p) である。
よって
Π (a/p) = Π (b/p)
即ち
(a/n) = (b/n) である。
証明終

892 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 09:53:29 ]
命題
(ab/n) = (a/n)(b/n) である。

証明
n = Π p を n の素因数分解とする。

前スレ3の756より各 p に対して (ab/p) = (a/p)(b/p) である。
よって
Π (ab/p) = Π (a/p)(b/p) = Π (a/p)Π (b/p)
即ち
(ab/n) = (a/n)(b/n) である。
証明終

893 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 10:05:10 ]
補題
a, b を奇数とすれば
(ab - 1)/2 ≡ (a - 1)/2 + (b - 1)/2 (mod 2)

証明
a - 1 と b - 1 は偶数だから
(a - 1)(b - 1) ≡ 0 (mod 4)
よって
ab - a - b + 1 ≡ 0 (mod 4)
ab - 1 ≡ (a - 1) + (b - 1) (mod 4)
よって
(ab - 1)/2 ≡ (a - 1)/2 + (b - 1)/2 (mod 2)
証明終

894 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 10:09:31 ]
補題
a, b を奇数とすれば
(a^2b^2 - 1)/8 ≡ (a^2 - 1)/8 + (b^2 - 1)/8 (mod 2)

証明
a^2 - 1 ≡ 0 (mod 4)
b^2 - 1 ≡ 0 (mod 4)
よって
(a^2 - 1)(b^2 - 1) ≡ 0 (mod 16)
よって
a^2b^2 - a^2 - b^2 + 1 ≡ 0 (mod 16)
a^2b^2 - 1 ≡ (a^2 - 1) + (b^2 - 1) (mod 16)
よって
(a^2b^2 - 1)/8 ≡ (a^2 - 1)/8 + (b^2 - 1)/8 (mod 2)
証明終

895 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 10:16:27 ]
命題
m > 1 と n > 1 が奇数で gcd(m, n) = 1 のとき

(m/n)(n/m) = (-1)^((m-1)/2)((n-1)/2)

証明
平方剰余の相互律(前スレ3の751)と >>893 より明らかである。

896 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 10:20:07 ]
命題
n > 1 が奇数のとき
(-1/n) = (-1)^((n-1)/2)

証明
平方剰余の第一補充法則(>>163)と >>893 より明らかである。

897 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 10:22:41 ]
命題
n > 1 が奇数のとき
(2/n) = (-1)^((n^2 - 1)/8)

証明
平方剰余の第2補充法則(>>53)と >>894 より明らかである。

898 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 11:04:32 ]
Jacobi の記号(>>890)をつかうと a の素因数分解を使わずに (a/p) が
計算できる。

例として (365/1847) を計算する(Dirichletの例)。
1847 は素数である。

365 ≡ 1 (mod 4) だから >>895 より
(365/1847) = (1847/365)

1847 ≡ 22 (mod 365) だから >>895 より
(1847/365) = (22/365)

>>892 より (22/365) = (2/365)(11/365)
>>897 より (2/365) = -1
よって (365/1847) = -(11/365)

>>895 より
(11/365) = (365/11) = (2/11) = -1

よって
(365/1847) = 1

実際 496^2 ≡ 365 (mod 1847)

899 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 11:35:11 ]
Legendre の記号 (a/p) を計算するために Jacobi の記号を使う方法は
相互律と素因数分解を使う方法より遥かに早い。

高木は「初等整数論講義」(第2版)の p.85 で

「このように Jacobi の記号を用いて Legendre の記号 (a/p) の値の計算
の手続きをいくぶん節約することができるのであるが、ただそれだけを
目標にして、 Jacobi の記号を掲出したのではない。
それはあまりにことごとしいであろう。」

と書いている。

理論的観点からはその通りかもしれない。
しかし、計算アルゴリズムという観点から見ると「いくぶん節約」
どころではなく遥かに早い。
大きい数の素因数分解は非常に遅いのである。

900 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:20:00 ]
21



901 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:21:00 ]
20

902 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:22:00 ]
19

903 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:23:00 ]
18

904 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:24:00 ]
17

905 名前:132人目の素数さん mailto:sage [2007/03/11(日) 12:25:00 ]
16

906 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:31:00 ]
15

907 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:32:00 ]
14

908 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:33:00 ]
13

909 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:34:00 ]
12

910 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:35:00 ]
11



911 名前:132人目の素数さん mailto:sage [2007/03/11(日) 13:36:00 ]
10

912 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 20:20:31 ]
>>888 で述べた a^((p - 1)/2) (mod p) を効率よく計算する
アルゴリズムを紹介する。

Cohen の A course in computational algebraic number theory に
述べられている方法である。

問題を一般にして、G を群とし、G の元 g と n > 0 に対して
g^n を計算する方法を考える。

n を2進数で表示して n = Σ(ε_i)2^i とする。
ε_i は 0 または 1 である。

g^n = Π g^(2^i) である。ここで i は ε_i = 1 となる i を動く。

各 g^(2^i) は、最初に z = g として z = z・z を繰り返せばよい。
ここで = は右辺を左辺に代入することを表す。

各 g^(2^i) を計算したら順次、前に計算した結果に掛けていく。

これで終わりである。

このアルゴリズムを擬似コードで書くと次のようになる。

913 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 20:24:46 ]
N = n
z = g
y = 1

do while(true)
  if N is odd then
    y = yz
  end if

  N = [N/2]

  if N = 0 then
    exit
  else
    z = zz
  end if
end do

[N/2] は N/2 の整数部分を表す。
コンピュータ言語のPascal風の擬似コ-ドの説明は不要だろう。

914 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 21:01:37 ]
p を奇素数、 a を有理整数で gcd(a, p) = 1 とする。
(a/p) = 1 のときに
x^2 ≡ a (mod p)
を解く方法を考える。

x = 1 から順番に x^2 ≡ a (mod p) を確かめていくのは p が大きい
ときにはコンピュータを使ったとしても実用的ではない。

ここでも Cohen 本から効率的なアルゴリズムを紹介する。

p が特殊な場合は解はすぐ得られる。

p ≡ 3 (mod 4) のときは
x = a^((p + 1)/4) が解である(これを計算するのは>>912を使う)。

何故なら
x^2 = a^((p + 1)/2) = aa^((p - 1)/2)

(a/p) = 1 だから a^((p - 1)/2) ≡ 1 (mod p)

よって x^2 ≡ a (mod p)

915 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 21:15:14 ]
命題
p を奇素数で p ≡ 5 (mod 8) とする。
a を有理整数で gcd(a, p) = 1、(a/p) = 1 とする。

a^((p - 1)/2) ≡ 1 (mod p) だから
a^((p - 1)/4) ≡ ±1 (mod p) である。

このとき a^((p - 1)/4) ≡ 1 (mod p) なら
x = a^((p + 3)/8) は
x^2 ≡ a (mod p) の解である。

a^((p - 1)/4) ≡ -1 (mod p) なら
x = 2a(4a)^((p - 5)/8) は
x^2 ≡ a (mod p) の解である。

証明
a^((p - 1)/4) ≡ 1 (mod p) なら
x^2 = a^((p + 3)/4) = aa^((p - 1)/4) ≡ 1 (mod p)

p ≡ 5 (mod 8) と、平方剰余の第2補充法則より
(2/p) = (-1)^((p^2 - 1)/8) = -1
よって
2^((p - 1)/2) ≡ -1 (mod p) だから

x^2 = 4a^2(4a)^((p - 5)/4) = a(4a)^((p - 1)/4)
= a(2^((p - 1)/2))a^((p - 1)/4) ≡ a (mod p)
証明終

916 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 22:01:44 ]
>>914>>915 より p ≡ 3 (mod 4) と p ≡ 5 (mod 8) のときは
x^2 ≡ a (mod p) の解は求まった。
残るのは p ≡ 1 (mod 8) の場合である。

p - 1 = (2^e)r, r は奇数とする。
(Z/pZ)^* は位数 p - 1 の巡回群だから、その 2-Sylow 部分群(>>790)
P は位数 2^e の巡回群である。

a^(p - 1)/2 = (a^r)^(2^(e-1)) ≡ 1 (mod p)
よって b = a^r (mod p) とおくと b^(2^(e-1)) = 1 である。

P の生成元を z とする。
b = z^s とすると z^(s2^(e-1)) = 1 より s は偶数である。
-s ≡ k (mod 2^e) で 0 ≦ k < 2^e となるものがある。
k も偶数である。
bz^k = 1 である。

x = (a^(r + 1)/2)z^k/2 とおく。
x^2 = (a^(r + 1))z^k = abz^k ≡ a (mod p)

よって問題は z と k を求めることに帰着する。

n を p と素な有理整数とする。

z = n^r (mod p) とおく。
z^(2^e) = (n^r)^(2^e) = n^(p - 1) ≡ 1 (mod p)
z^(2^(e-1)) = (n^r)^(2^(e-1)) = n^(p - 1)/2
よって (n/p) = -1 なら z は P の生成元である。
n をランダムに選べば 50% の確率で (n/p) = -1 となるから
z は簡単に求まる。

917 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 23:11:38 ]
今度は k を求める方法を考える。

b = a^r (mod p) とおいた。b^(2^(e-1)) = 1 である。
b^2^m = 1 となる最小の m ≧ 1 を求める。

b_1 = bz^2^(e-m) とおく。
(b_1)^2^(m-1) = (b^2^(m-1))(z^2^(e-1)) = (-1)^2 = 1
よって b_1 の位数は 2^(m-1) 以下である。

以上の処理を繰り返せば bz^k = 1 となる k が求まる。

918 名前:Kummer ◆g2BU0D6YN2 [2007/03/11(日) 23:18:29 ]
>>616>>617 のアルゴリズムは Tonelli と Shanks による。

919 名前:132人目の素数さん mailto:sage [2007/03/12(月) 09:06:00 ]
12

920 名前:132人目の素数さん mailto:sage [2007/03/12(月) 09:07:00 ]
11



921 名前:132人目の素数さん mailto:sage [2007/03/12(月) 09:08:00 ]
10

922 名前:132人目の素数さん mailto:sage [2007/03/12(月) 09:09:00 ]
11

923 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:14:00 ]
10

924 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:15:00 ]
9

925 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:16:00 ]
8

926 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:17:00 ]
7

927 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:18:00 ]
6

928 名前:132人目の素数さん mailto:sage [2007/03/12(月) 12:19:00 ]
5

929 名前:Kummer ◆g2BU0D6YN2 [2007/03/12(月) 21:02:02 ]
>>616>>617 のアルゴリズムがどこから来たのかがやや分かりにくい。
これを私の想像で説明して見よう。

>>916 の記号を使う。

b = a^r (mod p) とおくと b^(2^(e-1)) = 1 である。
よって b ∈ P である。
この観察が最初のキーポイントだと思われる。

y = a^(r + 1)/2 (mod p) とおく。
y^2 = a^(r + 1) = ab である。

w^2 = b となる w が求まれば
y^2 = aw^2
よって x = yw^(-1) おくと、
x^2 = (y^2)(w^(-2)) = abb^(-1) = a
となって x^2 ≡ a (mod p) が解ける。

従って、w^2 = b となる w を求めればよい。
これには P の生成元 z と b = z^s となる s を求めればよい。

以上が Tonelli と Shanks の基本アイデアだと思われる。

930 名前:Kummer ◆g2BU0D6YN2 [2007/03/12(月) 21:11:51 ]
訂正

>>929
>w^2 = b となる w が求まれば
>y^2 = aw^2
>よって x = yw^(-1) おくと、
>x^2 = (y^2)(w^(-2)) = abb^(-1) = a
>となって x^2 ≡ a (mod p) が解ける。

w^2 = b となる w が求まれば
y^2 = aw^2
よって
(yw^(-1))^2 = a
よって x = yw^(-1) おけば
x^2 = a
となって x^2 ≡ a (mod p) が解ける。



931 名前:Kummer ◆g2BU0D6YN2 [2007/03/12(月) 21:21:51 ]
>>916>>929 で a と a (mod p) を同一視している。
これは論理的にはおかしいがいわゆる記号の濫用
(abuse of notation)の一種(のつもり)です。

abuse of notation については英語版の wikipedia を参照。

932 名前:Kummer ◆g2BU0D6YN2 [2007/03/12(月) 21:27:44 ]
訂正
>>918
>>>616>>617 のアルゴリズムは Tonelli と Shanks による。

>>916>>917 のアルゴリズムは Tonelli と Shanks による。>>929
>>>616>>617 のアルゴリズムがどこから来たのかがやや分かりにくい。

>>916>>917 のアルゴリズムがどこから来たのかがやや分かりにくい。

933 名前:Kummer ◆g2BU0D6YN2 [2007/03/12(月) 23:25:52 ]
後の参照のため >>889 で述べたことの一部をもっと詳しく述べる。

命題
m > 1 と a を有理整数で gcd(a, m) = 1 とする。
m = (2^e)r、r は奇数。
r の相異なる素因数の個数を s とする。

x^2 ≡ a (mod m) に解があるためには

(1) e = 0 または e = 1 のときは r の各素因数 p に対して
(a/p) = 1 が必要十分である。
この条件が満たされるとき解の個数は 2^s である。

(2) e = 2 のときは r の各素因数 p に対して
(a/p) = 1 であり、さらに a ≡ 1 (mod 4) が必要十分である。
この条件が満たされるとき解の個数は 2^(s+1) である。

(3) e ≧ 3 のときは r の各素因数 p に対して
(a/p) = 1 であり、さらに a ≡ 1 (mod 8) が必要十分である。
この条件が満たされるとき解の個数は 2^(s+2) である。

証明
(1) は >>866>>889 より直ちに出る。

(2) は >>866>>879>>889 より直ちに出る。

(3) は >>866>>881, >>882>>889 より直ちに出る。

934 名前:132人目の素数さん mailto:sage [2007/03/13(火) 00:00:38 ]
        .,
        .|                          .             、・      ゙;
       、′   .   .  .  .′       .       .       ._.t~´        .’
       ゙,                                 .l・^´ . ’   .   .  .1 . .._.・ ̄\_
     .   ; . . .._>~   .  .,    , ...→_            .l   、’゙_、.‐     ._.・/< . . . .’
   .   、, ..._.¨`        ’    .|、。・`.、’_   .,・¨¨“÷   ,._、-・ヘ´    .  /゛ ..′  .  .  .!
      、,。・′・        、1    }・ . . ..’ .、,   ゙カ   ゙,^    ’_       .ソ”   .、.. . .}
       ;′ . ..’_    .   、’ . ...1    、}  ′  ゙ヅ| . 、,     .’_  .  、,・    /   .`、..../
      .;    .  ’    .   、} . ...l!  . . .| . ...\・~ . | . .,       ’_    ,’   .  `._ ....}_ノ`
      ,  .  . .’       ゙! . 、’     .’      、,  ′   .   、’、-  .  .  .  .`¨¨′
  .  . .i       ゙’                      、|
  .  . .l                             ̄ ̄   

 . . .._
 . . .i
   ゙,  . . .-_ . 、;
   ,・ナ・_   . `、 ./
  、,   .)    .`j.´
  、l 、.-’ . . ./

  .  .  .l       }
 、============-
  .  .  .|   . 、 . ..|
  .  .  .’ . 、|   ゙’
  . .}.-‐………………………,
   、|     .  |==・ . . . .・
   、’      .’._、.」
     .    ./ ´
  .  .  .  .,¨¨TTナナナ,
        ゙______|

935 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:10:00 ]
12

936 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:11:00 ]
11

937 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:12:00 ]
10

938 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:13:00 ]
9

939 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:14:00 ]
8

940 名前:132人目の素数さん mailto:sage [2007/03/13(火) 08:15:00 ]
7



941 名前:Kummer ◆g2BU0D6YN2 [2007/03/14(水) 20:35:37 ]
Tonelli-Shanks のアルゴリズム(>>916, >>917) を具体例に
適用してみる。
p = 2281 は素数で p ≡ 1 (mod 8) である。
因みに 2^p - 1 は Mersenne 素数である(岩波数学辞典の付録)。

Jacobi の記号を使って (365/2281) を計算すると、
(365/2281) = (2281/365) = (91/365) = (365/91) = (1/91) = 1
よって x^2 ≡ 365 (mod 2281) には解がある。
p - 1 = 2280 = 8・285
365^285 (mod 2281) を >>912, >>913 のアルゴリズムで電卓をつかって
計算すると、365^285 ≡ -1 (mod 2281)

同様に y = 365^(285+1)/2 = 365^143 ≡ 2139 (mod 2281)
よって y^2 = 365^(285+1) ≡ -365 (mod 2281)

小さい数 n で (n/p) = -1 となるものを見つける。
n = 2, 3, 5, 7, ... と試していく。

p ≡ 1 (mod 8) だから >>53 より (2/2281) = 1
(3/2281) = (2281/3) = (1/3) = 1
(5/2281) = (2281/5) = (1/5) = 1
(7/2281) = (2281/7) = (-1/7) = -1

7^285 ≡ 1207 (mod 2281)
よって z = 1207 (mod 2281) が (Z/pZ)^* の 2-Sylow 群の生成元
である(>>916)。
z^8 = 1 だから z^4 = -1
a = 365 (mod 2281) とおくと、y^2 = -a = a(z^4)
よって y^2(z^4) = a
(y(z^2))^2 = a
よって x = y(z^2) = 2139*1571 ≡ 456 (mod 2281) が
x^2 ≡ 365 (mod 2281) の解である。

942 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:14:00 ]
9

943 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:15:00 ]
8

944 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:16:00 ]
7

945 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:17:00 ]
6

946 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:18:00 ]
5

947 名前:132人目の素数さん mailto:sage [2007/03/15(木) 12:19:00 ]
4

948 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 12:56:50 ]
Dirichlet の「整数論講義」に従って >>933 の応用として
Wilson の定理の拡張(Gauss)を証明する。

その前に Wilson の定理について述べる。

命題(Wilson の定理)
p を素数とすると (p - 1)! ≡ -1 (mod p) である。

証明
p = 2 のときは明らかだから p は奇素数とする。

mod p で多項式 X^(p - 1) - 1 を考える。

X^(p - 1) - 1 ≡ (X - 1)(X - 2) ... (X - (p - 1)) (mod p) である。

X = 0 とおくと
- 1 ≡ ((-1)^(p - 1))(p - 1)!(mod p) である。

p - 1 は偶数だから (-1)^(p - 1) = 1 である。
よって
(p - 1)! ≡ -1 (mod p) である。
証明終

949 名前:132人目の素数さん mailto:sage [2007/03/15(木) 18:25:20 ]
        .,
        .|                          .             、・      ゙;
       、′   .   .  .  .′       .       .       ._.t~´        .’
       ゙,                                 .l・^´ . ’   .   .  .1 . .._.・ ̄\_
     .   ; . . .._>~   .  .,    , ...→_            .l   、’゙_、.‐     ._.・/< . . . .’
   .   、, ..._.¨`        ’    .|、。・`.、’_   .,・¨¨“÷   ,._、-・ヘ´    .  /゛ ..′  .  .  .!
      、,。・′・        、1    }・ . . ..’ .、,   ゙カ   ゙,^    ’_       .ソ”   .、.. . .}
       ;′ . ..’_    .   、’ . ...1    、}  ′  ゙ヅ| . 、,     .’_  .  、,・    /   .`、..../
      .;    .  ’    .   、} . ...l!  . . .| . ...\・~ . | . .,       ’_    ,’   .  `._ ....}_ノ`
      ,  .  . .’       ゙! . 、’     .’      、,  ′   .   、’、-  .  .  .  .`¨¨′
  .  . .i       ゙’                      、|
  .  . .l                             ̄ ̄   

 . . .._
 . . .i
   ゙,  . . .-_ . 、;
   ,・ナ・_   . `、 ./
  、,   .)    .`j.´
  、l 、.-’ . . ./

  .  .  .l       }
 、============-
  .  .  .|   . 、 . ..|
  .  .  .’ . 、|   ゙’
  . .}.-‐………………………,
   、|     .  |==・ . . . .・
   、’      .’._、.」
     .    ./ ´
  .  .  .  .,¨¨TTナナナ,
        ゙______|

950 名前:132人目の素数さん mailto:sage [2007/03/15(木) 18:35:50 ]
うんこーーーーーーー



951 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 21:46:58 ]
Wilson の定理を一般の mod m の場合に拡張するためには >>948
証明ではうまくいかない。
そこで拡張可能な証明を紹介する。

Wilson の定理(>>948)の別証

p = 2 のときは明らかだから p は奇素数とする。

(Z/pZ)^* を以下の同値関係で類別する。

x と y を (Z/pZ)^* の元としたとき y = x^(-1) のとき x と y は
同値と定義する。

x = x^(-1) となるのは x^2 = 1 のときに限る。つまり x = ±1
の時に限る。
x ≠ x^(-1) のとき、つまり x ≠ ±1 のときは x の属す同値類は
{x, x^(-1)} である。

よって (Z/pZ)^* の同値類は以下のタイプで尽くされる。
{1}, {-1}, {x, x^(-1)}
ここで x ≠ ±1

xx^(-1) = 1 であるから (Z/pZ)^* の ±1 以外の全ての元の積は 1
である。
よって (Z/pZ)^* の全ての元の積は 1(-1) = -1 である。
証明終

952 名前:132人目の素数さん mailto:sage [2007/03/15(木) 21:47:27 ]
うんこ

953 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 22:07:58 ]
m > 2 を有理整数として (Z/mZ)^* を考える。

(Z/mZ)^* を以下の同値関係で類別する。

x と y を (Z/mZ)^* の元としたとき y = x^(-1) のとき x と y は
同値と定義する。

x = x^(-1) となるのは x^2 = 1 のときに限る。

よって (Z/mZ)^* の同値類は以下のタイプで尽くされる。
{a}, {b, b^(-1)}

ここで a^2 = 1, b^2 ≠ 1

よって (Z/mZ)^* の元 b で b^2 ≠ 1 となるもの全ての積は 1 である。
よって S = {a ∈ (Z/pZ)^* ; a^2 = 1} とおくと、
(Z/mZ)^* の全ての元の積は S の全ての元の積と一致する。

S を以下の同値関係で類別する。
x と y を S の元としたとき y = -x のとき x と y は
同値と定義する。

x = -x となるのは 2x = 0 のときに限る。
x = c (mod m) とすると 2c ≡ 0 (mod m) である。
gcd(c, m) = 1 だから 2 ≡ 0 (mod m) である。
m > 2 であるからこれはありえない。
よって S の同値類は以下のタイプで尽くされる。
{b, -b}
よって S の全ての元の積は b(-b) = -b^2 = -1 の(|S|/2)乗である。
これは |S|/2 が偶数、つまり |S| ≡ 0 (mod 4) のときは 1
そうでないときは -1 である。

954 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 22:33:22 ]
>>833 より x^2 ≡ 1 (mod m) の解の個数、つまり |S| は

(1) m = p^n または 2p^n のとき |S| = 2
ここで p は奇素数で n ≧ 1

(2) m = 4 のとき |S| = 2

(3) m = 4r、r は奇数 > 1 のとき |S| = 2^(s + 1)
ここで s は r の相異なる素因数の個数である。

(4) m = (2^e)r, e ≧ 3, r は奇数のときは
|S| = 2^(s + 1)

以上から |S| = 2 となるのは (1) と (2) の場合であり、
(3) と (4) の場合は |S| ≡ 0 (mod 4) である。

よって >>953 より次の命題が得られる。

命題(Wilson の定理の拡張)
m > 2 を有理整数とする。
(Z/mZ)^* の全ての元の積は以下のようになる。

(1) m = 4 または m = p^n または 2p^n のとき積は -1
ここで p は奇素数で n ≧ 1

(2) 上記以外の場合、積は 1

955 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 22:40:46 ]
>>954 の命題(Wilson の定理の拡張)は Gauss が初めて証明した
(Disquisitiones art. 78)。

956 名前:Kummer ◆g2BU0D6YN2 [2007/03/15(木) 22:49:18 ]
Wilson の定理(>>948) の逆も成り立つ。

命題
n > 1 を有理整数とする。
(n - 1)! ≡ -1 (mod n) なら n は素数である。

証明
n が素数でないとすると p < n となる素数 p で n を割るものがある。
p ≦ n - 1 だから (n - 1)! ≡ 0 (mod p) である。
一方、(n - 1)! ≡ -1 (mod n) だから (n - 1)! ≡ -1 (mod p)
である。
よって -1 ≡ 0 (mod p) である。
これは矛盾である。
証明終

957 名前:132人目の素数さん mailto:sage [2007/03/15(木) 23:02:24 ]
        .,
        .|                          .             、・      ゙;
       、′   .   .  .  .′       .       .       ._.t~´        .’
       ゙,                                 .l・^´ . ’   .   .  .1 . .._.・ ̄\_
     .   ; . . .._>~   .  .,    , ...→_            .l   、’゙_、.‐     ._.・/< . . . .’
   .   、, ..._.¨`        ’    .|、。・`.、’_   .,・¨¨“÷   ,._、-・ヘ´    .  /゛ ..′  .  .  .!
      、,。・′・        、1    }・ . . ..’ .、,   ゙カ   ゙,^    ’_       .ソ”   .、.. . .}
       ;′ . ..’_    .   、’ . ...1    、}  ′  ゙ヅ| . 、,     .’_  .  、,・    /   .`、..../
      .;    .  ’    .   、} . ...l!  . . .| . ...\・~ . | . .,       ’_    ,’   .  `._ ....}_ノ`
      ,  .  . .’       ゙! . 、’     .’      、,  ′   .   、’、-  .  .  .  .`¨¨′
  .  . .i       ゙’                      、|
  .  . .l                             ̄ ̄   

 . . .._
 . . .i
   ゙,  . . .-_ . 、;
   ,・ナ・_   . `、 ./
  、,   .)    .`j.´
  、l 、.-’ . . ./

  .  .  .l       }
 、============-
  .  .  .|   . 、 . ..|
  .  .  .’ . 、|   ゙’
  . .}.-‐………………………,
   、|     .  |==・ . . . .・
   、’      .’._、.」
     .    ./ ´
  .  .  .  .,¨¨TTナナナ,
        ゙______|

958 名前:132人目の素数さん mailto:sage [2007/03/16(金) 01:35:00 ]
11

959 名前:132人目の素数さん mailto:sage [2007/03/16(金) 01:36:00 ]
10

960 名前:132人目の素数さん mailto:sage [2007/03/16(金) 01:37:00 ]
9



961 名前:132人目の素数さん mailto:sage [2007/03/16(金) 01:38:00 ]
8

962 名前:132人目の素数さん mailto:sage [2007/03/16(金) 01:39:00 ]
7






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<500KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef