メモ(数論4): ガウス整数

「ユークリッド整域は一意分解整域」イデアルを使わない証明法。ピタゴラス・トリオで遊んじゃえっ!

***

2021-10-04 ピタゴラス・トリオで遊んじゃえっ 勉強だって遊んじゃえっ

1. どの辺の長さも50以下の整数であるような直角三角形は、何種類あるか。言い換えると、x2 + y2 = z2 を満たす50以下の正の整数の組み合わせは、何種類あるか。

ただし (x, y, z) と (y, x, z) については、同じ組み合わせと考える。例えば、
  32 + 42 = 52 と 42 + 32 = 52
…については、別の組み合わせとは考えず、同じトリオの順番を変えただけ、と見なす。

ピタゴラス・トリオそのものは古典的な問題で、本質的に異なる全てのトリオは

の形を持つことが知られている。ここで m, n は互いに素な正の整数で、偶奇が異なり、m > n

ゴチャゴチャ考えるより、とりあえず全数検索!

\\pari
{
 c = 0; \\ counter
 for( x=1, 50,
  for( y=x, 50,
   if( issquare( x^2+y^2, &z ) && z <= 50,
    printf( "[%2d] %d^2 + %d^2 = %d^2\n", c++, x, y, z )
   )
  )
 )
}

…実行すると、ちょうど20種類、ぞろぞろ出てくる:

[ 1] 3^2 + 4^2 = 5^2
[ 2] 5^2 + 12^2 = 13^2
[ 3] 6^2 + 8^2 = 10^2
[ 4] 7^2 + 24^2 = 25^2
[ 5] 8^2 + 15^2 = 17^2
[ 6] 9^2 + 12^2 = 15^2
[ 7] 9^2 + 40^2 = 41^2
[ 8] 10^2 + 24^2 = 26^2
[ 9] 12^2 + 16^2 = 20^2
[10] 12^2 + 35^2 = 37^2
[11] 14^2 + 48^2 = 50^2
[12] 15^2 + 20^2 = 25^2
[13] 15^2 + 36^2 = 39^2
[14] 16^2 + 30^2 = 34^2
[15] 18^2 + 24^2 = 30^2
[16] 20^2 + 21^2 = 29^2
[17] 21^2 + 28^2 = 35^2
[18] 24^2 + 32^2 = 40^2
[19] 27^2 + 36^2 = 45^2
[20] 30^2 + 40^2 = 50^2

[3] は [1] の各項を2倍しただけ、[6] は [1] の各項を3倍しただけ、[8] は [2] の各項を2倍しただけ…この種の、つまらないトリオが多い。(x, y, z) がピタゴラス・トリオなら、任意の正の整数 k について (kx, ky, kz) もピタゴラス・トリオになるに決まってるのだから、互いに素なトリオだけを考えた方が良さそうだ。

そこで z <= 50 の後ろに && gcd(x,y)==1 を追加すると:

[ 1] 3^2 + 4^2 = 5^2
[ 2] 5^2 + 12^2 = 13^2
[ 3] 7^2 + 24^2 = 25^2
[ 4] 8^2 + 15^2 = 17^2
[ 5] 9^2 + 40^2 = 41^2
[ 6] 12^2 + 35^2 = 37^2
[ 7] 20^2 + 21^2 = 29^2

50までの範囲には、本質的に違うトリオは7種類しかない。こうなると、なかなか貴重品のように思えてくる。20以下の小さいトリオは:

3^2 + 4^2 = 9 + 16 = 25 = 5^2
5^2 + 12^2 = 25 + 144 = 169 = 13^2
8^2 + 15^2 = 64 + 225 = 289 = 17^2

美しい!!

互いに素という制約を付けた場合、上記の数値例から、「x と y は一方が偶数、他方が奇数で、偶奇が一致しない」と予想される(だとすると、z2 は偶数と奇数の和で奇数、従って z は奇数)。実際、互いに素なのだから、両方偶数ということはあり得ない。両方奇数という可能性も排除するため、「奇数の平方を4で割ると1余る」ことに注目しよう。x2 と y2 が両方とも「4で割ると1余る数」だとすると、それらの和は「4で割ると2余る数」になるが、「4で割ると2余る数」を素因数分解した場合、素因数2が奇数個。そのような数は平方数ではなく、つまり z2 の形を持ち得ない。

2. ピタゴラス・トリオは、単位円上の「有理点」と結び付いている。ここで「有理点」とは、x-座標 と y-座標がどちらも有理数になるような点。

実際、条件 x2 + y2 = z2 の両辺を z2 で割ると:

(x/z)2 + (y/z)2 = 1 ここで p = x/z, q = y/z と置くと、ピタゴラス・トリオ (x, y, z) は単位円上の有理点 (p, q) に対応する。

逆に (p, q) が有理点なら、有理数の定義から、整数 x, y, z があって (p, q) = (x/z, y/z) と書けるのだから、ピタゴラス・トリオを見つけることは、単位円上の有理点を見つけることと本質的に同じ。ただし、例えば、トリオ (3, 4, 5) と (6, 8, 10) は、どちらも単位円上の同じ点 (3/5, 4/5) = (6/10, 8/10) に対応していて、1対1対応にはなっていない。1対1対応にしたければ「互いに素なトリオ」だけを考えればいい。

【疑問】 単位円上の有理点とは、どのような点か?

PNG画像32: 原点Oを中心とする半径1の緑の円を考える。点(−1, 0)をC、円周上の別の点をPとし、CPは青い直線で結ばれているとする。OPと正のx-軸が成す角をθとする。Pからx-軸に下ろした垂線の足をTとする。CPとy-軸の交点をDとし、線分ODを「赤い部分」と呼ぶ。点Dの座標を(0, u)とすると、「赤い部分」はuに当たる。

図を描くのが面倒なので、「倍角の公式(その2)」の図を再利用。

第一象限にある点 P の座標 (p, q) が有理数なら、青い直線 CP の傾き u も有理数: 実際 u = q/(1 + p) である。

(CP の傾きが u = OD に等しい理由は、C から D まで横座標が 1 増加するとき、縦座標が u 増加するから。)

逆に、青い直線の傾き u が有理数なら、P は有理点である。

【証明】 緑の単位円の方程式を x2 + y2 = 1 とする。青い直線の式は y = ux + u なので、前者に後者を代入すると、2次方程式になる。それを解くと(途中計算は、「倍角の公式(その2)」の「幾何学的な方法」参照):

仮定により u は正の有理数なので、正の整数 m, n が存在して u = n/m と書ける。すなわち:

p も q も、それぞれ2整数の比だから有理数。□

p = x/z, q = y/z なのだから、ピタゴラス・トリオは、
  (m2 − n2, 2mnm2 + n2)
の形を持つ(x と y の大小関係は一定していない)。

これで冒頭の主張(☆)が確認された。

「m, n が互いに素」という条件は、そうでなければ (x, y, z) が互いに素にならないことから。従って m, n は両方とも偶数ということはない。また両方奇数だとすると (x, y, z) は全部偶数になってしまうので、それもない。つまり本質的に異なるピタゴラス・トリオだけを考えたい場合、言い換えれば (x, y, z) が互いに素という条件と付ける場合、必然的に m, n は互いに素で、偶奇が異なる。仮定より x = m2 − n2 は正の整数なので、m > n。

3. ピタゴラス・トリオは、具体的にどのように、単位円上の有理点と対応しているか?

まず (3, 4, 5) だが…。上記の文脈においては「(3/5, 4/5) は単位円上の点」という意味。
 (3/5)2 + (4/5)2 = 25/25 = 1
なので、事実としては明白だが、三角関数的には…

arccos (3/5) = 0.927295218…
sin 0.927295218… = 4/5

θ = 0.927295218… ラジアンは、53.1301…度に当たる。何だか見覚えのある角度のような…?

(x, y, z) = (3, 4, 5) のとき、傾き u は?

このトリオを生成するのは (m, n) = (2, 1) なので、u = n/m = 1/2 となる。つまり:

θ/2 = arctan (1/2) = 0.463647609…
θ = 2 arctan (1/2) = 0.927295218…

見覚えのあるような θ = 0.927295218… の正体は、arctan (1/2) の2倍であった。

それは、もちろん複素数 3 + 4i の偏角でもある!

arg (3+4i) = 0.927295218…

他のピタゴラス・トリオも同様であり、ピタゴラス・トリオをガウス整数の問題として扱えることが示唆される。ピタゴラス・トリオの性質は「原点からの距離が整数になるような、整数格子点」。言い換えると「ノルムが平方数であるようなガウス整数」。

何だか面白くなってきた。何して遊ぼっか? ここからどこに行こっか?

✿ ✿ ✿


2021-10-05 フェルマーの最終定理: n=4 の場合 ピタゴラス・トリオで遊んじゃえっ

32 + 42 = 52 や 52 + 122 = 132 のような性質を満たすトリオ (3, 4, 5), (5, 12, 13), …。トリオたちの一般的性質は、それ自体として面白いだけでなく、もっと深い事柄と結び付いている。前回、ガウス整数の方向に行きかけたが、気まぐれに方向転換して、今回は「フェルマーの最終定理の n=4 の場合」を考えてみたい。

4. x4 + y4 = z4 を満たす正の整数 x, y, z は存在しない。

【証明】 「そのような x, y, z が存在して、次の関係を満たす」と仮定し、矛盾を導く。

  1. x4 + y4 = z4 ……… ①
  2. 言い換えれば (x2)2 + (y2)2 = (z2)2 ……… ②

一般性を失うことなく x と y は互いに素と仮定できる(もし x と y の最大公約数 g が 1 でないなら、x/g, y/g, z/g をあらためて x, y, z と置けばいい)。

②において (x2, y2, z2) は互いに素なピタゴラス・トリオなので、前回の考察から、こう書ける:

  1. x2 = m2 − n2
  2. y2 = 2mn
  3. z2 = m2 + n2

ここで m, n は互いに素な正の整数で、一方が奇数・他方が偶数であり、m > n を満たす。x2 が奇数、y2 が偶数と仮定しているが、そのことによって一般性は失われない(もし偶奇が逆だったら、単に x と y の名前を入れ替えればいい)。

さらに(これも前回、具体的に経験したことだが)、ピタゴラス・トリオ (A, B, C) は C の大きさによってソートできる。そこで、上記の (x2, y2, z2) について、「①つまり②を成り立たせるような、最小の z2 を選択した」と仮定しよう。もし正の整数解が一つ以上あるなら、当然その中で最小のトリオを見つけることができるので(解がたまたま一つ見つかったとして、最悪、それより小さい範囲を全数検索すればいい)、それを①②の解としよう。

以下で見るように、実際には「トリオの第3要素 C が平方数 z2」という条件を外してさえ、(x2, y2, C) の形のピタゴラス・トリオは一つも存在しない。

5. 奇数の平方は「4で割ると1余る数」。上記の x2 は奇数なので、x は奇数、x2 は「4で割ると1余る数」。そのためには、m が奇数で n が偶数でなければならない(そのとき m2 は「4で割ると1余る数」、n2 は4の倍数)。なぜならば、mn の偶奇がその逆だとすると m2 − n2 は「4で割ると3余る数」になってしまい、x2(それは「4で割ると1余る数」である)と等しくなり得ない。今、偶数 n を n = 2k と書くと:

  1. y2 = 2mn = 2m(2k) = 4mk  これは4の倍数
  2. 両辺を4で割って y2/4 = (y/2)2 = mk

mn は互いに素だから、mk = n/2 も互いに素。ところが mk = (y/2)2 は平方数だから、mk もそれぞれ平方数。m = c2, k = d2 と書くと:

  1. x2 = m2 − n2 = (c2)2 − (2k)2 = (c2)2 − (2d2)2
  2. 移項して x2 + (2d2)2 = (c2)2

従って、(x, 2d2, c2) も互いに素なピタゴラス・トリオであり、x は奇数、2d2 は偶数。だからこう書ける(M, N は、互いに素な正の整数):

  1. x = M2 − N2
  2. 2d2 = 2MN つまり MN = d2
  3. c2 = M2 + N2

6. MN = d2 は平方数だが、MN は互いに素なので、MN もそれぞれ平方数。M = a2, N = b2 と書くと:

  1. c2 = M2 + N2 = a4 + b4
  2. つまり a4 + b4 = c2 ……… ③

③から、(a2, b2, c) もピタゴラス・トリオ。しかし、それは矛盾である! 実際、上記の式変形を振り返ると:

  1. c ≤ c2 = m < m2 + n2 = z2

トリオの最後の数 c について、①では、この形の式を満たす最小の z2 を選んだ。だから、z2 より小さい正の整数 c が③の形を持つ…というのは、議論の前提に反する。

「①②を満たす最小の正の整数 z2 を選んだとき…」と考えると、矛盾が生じる…。でも、①②の形のピタゴラス・トリオが一つ以上存在するなら、もちろんその中で最小のものを選べる。つまり、もっとさかのぼって、「①②の形のピタゴラス・トリオが一つ以上存在する」ということ自体が不可能なのである。これが示したいことだった。□

これは本当の意味での、フェルマーの定理であり、フェルマー自身によって、同様の考え方によって証明されたらしい。

フェルマーは n=4 以外の一般の場合についても証明できると考えたが、実際には「その証明を書くには、この余白は狭過ぎる」という有名な言葉を記したにすぎない。フェルマーの最終定理と呼ばれるものは、正確には「フェルマーの予想」だった。のほほんとした「余白が狭過ぎる」発言を出発点に、フェルマー自身の考えさえ超越して、数論は大発展。フェルマーの予想は、漫画で言えば手塚治虫の「火の鳥」のようなものだった。

そこから派生した数論的技術は、純粋にそれ自体として面白いだけでなく、現代のネット社会を裏で支えるツールとして、日常的に活用されている(セキュアな通信で使われる楕円曲線暗号のように)。フェルマーの最終定理がそうだったように、現代のネットを支える計算量の理論にも、核心部には「予想」が交じっている。証明されてない予想に基づいて、オンライン決済とかをしている…というのは、理論的には怖いことだが、予想の裏をかける数学の天才の発生確率より、人間をだます詐欺師の発生確率の方が桁違いに高いので、相対的に前者の心配は小さい。数学側の本音としては、むしろ予想が間違っていたと判明する方がエキサイティング。予想がきちんと証明されれば、それはそれで気持ちがいい。

✿ ✿ ✿


2021-10-13 123+45i と 678+90i の最大公約数 「ゴルゴ13」分解計画への前奏曲

7. ピタゴラス・トリオも、フェルマーの最終定理の n=4 の場合も、ガウス整数の問題として考えるのが正道だろうし、多くの教科書に必ず出る話題だろうが、普通に群・環から始めると、結構だるい。

ここでは具体的な問題を考えてみたい。

【問題】 ガウス整数 a = 123+45i と b = 678+90i の最大公約数は何か?

これらの数を凝視すると「実部も虚部も3で割り切れる」。だから 3+3i が公約数だろうけど、それは最大だろうか?

そもそもガウス整数の大小とは…? 素朴な発想は、a と b をそれぞれ素因数分解してみることだろう。それで共通の素因数を全部抜き出して、それらを掛け算すれば、それが最大公約数に違いない。ただし、素因数分解は易しくない。

a = −i⋅3(1+i)(13+28i)

b = −i⋅3(1+i)(8+3i)(8+5i)

もし上記の分解を事実と認めるなら、単数倍の違いを無視して、最大公約数は 3(1+i) だろうが、どうやって上記のように分解されるのか。そもそも一意分解が成り立つのか…。

普通の整数の場合もそうだが、最大公約数を知りたいだけなら、素因数分解よりユークリッドの互除法の方が、単純で、効率が良い。ガウス整数でも、同じ方法を試してみたい。

複素数の範囲で b/a = 5.0975… − i1.1332…

ガウス整数としては、b を a で割ると、割り切れずに、商が 5−i で余りが発生すると予想される。この余りを r1 とすると…

b = a(5−i) + r1 つまり r1 = b − a(5−i) = 18−12i

同様に a/r1 = 3.5769… + i4.8846… だから

a = r1(4+5i) + r2 つまり r2 = a − r1(4+5i) = −9+3i 余りが r1 より「小さく」なった。良い兆候。

次に r1/r2 = −2.2 + 0.6i だから

r1 = r2(−2+i) + r3 つまり r3 = r1 − r2(−2+i) = 3+3i 余りが r2 よりさらに「小さく」なった。

最後に r2/r3 = −1 + 2i これで余りがゼロ、割り切れた!

互除法によれば、割り切れる1個手前の余り r3 = 3+3i が a と b の最大公約数。ユークリッドのありがたみがよく分かる。素因数分解と比べると単純計算だし、厳密化も比較的簡単そうだ。まずは「最大公約数」の意味を定義して、次にガウス整数でも互除法ができることを示せばいいだろう。上記の例から「互除法を使うと、余りの絶対値がだんだん小さくなる。余りはガウス整数なので、有限の値からだんだん小さくなるとしたら、いつかはゼロになるしかない」ということが分かる。

✿ ✿ ✿


2021-10-14 複素整数「ゴルゴ13」 565+13i

G = 565+13i はガウス整数の範囲で素数だろうか、それとも分解されるのか?

a = 123+45i と G の最大公約数は何か? (もし 1 でないとすれば、もちろんゴルゴ13は素数でない。)

まずは準備体操として、普通の整数の範囲での「ユークリッドの互除法」を思い出そう。

【例題】 3195億7869万7969 と 6385億0876万1014 の最大公約数は何か?

【互除法=ユークリッドのアルゴリズム】 2個の整数が与えられる。大きい方を M、小さい方を N としよう。M と N の最大公約数を求めたい。

ステップ1 M を N で割る。割り切れれば、もちろん最大公約数は N そのものだが、割り切れない場合を考える。M の方がでかいのだから、商は1以上だが、商はとりあえず無視。問題は余り。余りが r1 だったとする。

ステップ2 今度は N を割る。何で割る? 直前のステップの余り r1 で割る。今度は余りが r2 だったとしよう。

ステップ3 r1 を r2 で割って、余りを r3 とする。

ステップ4 r2 を r3 で割って、余りを r4 とする。

ステップ5 r3 を r4 で割って、余りを r5 とする。

以下同様に、割り切れるまで(余りがゼロになるまで)続ける。ゼロでなかった最後の余りが、M と N の最大公約数。

さっそく上の例題に適用。

N = 319578697969
M = 638508761014
MをNで割る → 余り r1 = 318930063045
Nをr1で割る → 余り r2 = 648634924
r1をr2で割る → 余り r3 = 450315361
r2をr3で割る → 余り r4 = 198319563
r3をr4で割る → 余り r5 = 53676235
r4をr5で割る → 余り r6 = 37290858
r5をr6で割る → 余り r7 = 16385377
r6をr7で割る → 余り r8 = 4520104
r7をr8で割る → 余り r9 = 2825065
r8をr9で割る → 余り r10 = 1695039
r9をr10で割る → 余り r11 = 1130026
r10をr11で割る → 余り r12 = 565013
r11をr12で割る → 余り r13 = 0 割り切れた

従って、ゼロでなかった最後の余り r12 = 565013 が gcd(M,N) ということに。比較として、素因数分解を強行するなら…
 M = 2 × 565013 × 565039
 N = 565013 × 565613
…となって、同じ結論が得られるが、この分解を試行除算で行うと、何万回も割り算する必要がある。ユークリッドの互除法なら、たった13回の割り算で答えが出るのだから、桁違いに効率が良い。

もちろん重要なのは「なぜこのアルゴリズムでうまくいくのか」。

普通の整数の範囲での互除法の証明については、以下でも記すが、多くの文献に記されている。例えばオンライン教科書『Elementary Number Theory: Primes, Congruences, and Secrets』
https://wstein.org/books/ent/ent.pdf
では、§1.1.2。同じアルゴリズムが一般の整域で通用するかどうかは微妙だが、ガウス整数に関しては、それほど難しくない。(続く)

✿ ✿ ✿


2021-10-23 「ゴルゴ13」分解計画 565+13i

8. 諸行無常、万物は流転する。有名な殺し屋ゴルゴにも、ついに自分がバラされる日が…? それとも 565+13i は、分解不可能な複素整数だろうか。

われわれは極秘裏に調査を開始した(謎)。

ミッション1 13 は 22 + 32 に等しい。565 も 2個の平方数の和として書けるか?

ミッション2 素数2は、複素整数の範囲では (1+i)(1−i) と分解される。G = 565+13i は、複素整数の範囲では分解可能か?

***

最初のミッションは、フェルマーの「2平方の定理」の一般形に当たる。4k+1型の素数(愛称: バニラ素数)は2平方数の和として書けるが、4k+3型の素数(愛称: チョコレート素数)は2平方数の和として書けない。565は、5の倍数。素数じゃないので、判定法はもう少しややこしい。「こんな小さい数、全数検索だっ!」…と言いたいところだが、まぁスナイパーのゴルゴに敬意を払い、ここはブルートフォースでなく、精密に考察する方向で…

まずは、普通に有理素数に分解: 565 = 5 × 113。どちらの因子もバニラ素数なので、ガウス整数の範囲では、さらに分解される:
   5 = 12 + 22 = (1 + 2i)(1 − 2i)
   113 = 72 + 82 = (7 + 8i)(7 − 8i)

バラバラになったゴルゴ。5を分解した因子と、113を分解した因子を一つずつ組み合わせて、例えば、こう書ける:
   (1 + 2i)(7 + 8i) = −9 + 22i
   (1 − 2i)(7 − 8i) = −9 − 22i
   つまり 5 × 113 = (−9 + 22i)(−9 − 22i) = (−9)2 + 222 = 81 + 484 = 565

もう1パターンの組み合わせ方を使うと:
   (1 + 2i)(7 − 8i) = 23 + 6i
   (1 − 2i)(7 + 8i) = 23 − 6i
   つまり 5 × 113 = (23 + 6i)(23 − 6i) = 232 + 62 = 529 + 36 = 565

結論として、足す順序と平方される数の符号を無視すると、565 は2通りの方法で2平方数の和となるようだ: 62 + 232 = 92 + 222

これで第1のミッションは一応完了。「普通の整数の問題でも、あえてガウス整数などの広い範囲で考えることで、簡単になる場合がある」という好例だろう。

***

9. 上記の議論を検討すると、バニラ素数を2平方数の和にする部分が、透明になっていない。5 = 12 + 22 はともかく、113 = 72 + 82 はそれほど明らかではない。任意の大きいバニラ素数、例えば 565013 について、全数検索せずに、2平方の和の形…
   565013 = 2382 + 7132
…にするアルゴリズムが欲しい。ここで役立つのが、フェルマーの小定理の考え方: p が素数なら、2以上 p 未満の任意の整数 b について
   bp−1 ≡ 1 (mod p)
が成り立つが、このような b の中には、p−1乗して初めて ≡ 1 になる数(原始根)がある。そのような b を選んで固定する。今、p を奇数とすると、(p−1)/2 は整数であり、
   q ≡ b(p−1)/2 と置くと q2 ≡ bp−1 ≡ 1 (mod p)
ここで b は、p−1乗して初めて ≡ 1 になるのだから、(p−1)/2乗では ≡ 1 にならない。つまり q は ≡ 1 ではないが、2乗すると ≡ 1 になる数であり、要するに q ≡ −1 だろう[※注1]。さらに、p を4k+1型の素数(バニラ素数)に限定した場合、(p−1)/4 も整数であり、上記と同様に
   r ≡ b(p−1)/4 と置くと r2 ≡ q ≡ −1 (mod p)
   つまり r2 + 1 ≡ 0 (mod p)
これは
   自然数 r2 + 1 を p で割ると 0 余る
   つまり r2 + 1 = (r + i)(r − i) は p の倍数 ……… (☆)
という意味。

[※注1] q2 ≡ 1 つまり q2 − 1 = (q + 1)(q − 1) ≡ 0 なので、(q + 1)(q − 1) は p の倍数。p は素数なので、(q + 1) または (q − 1) は p の倍数(下記参照)。後者が p の倍数なら q − 1 ≡ 0, q ≡ 1 だが、仮定よりそうではない。だから前者が p の倍数で q + 1 ≡ 0, q ≡ −1。…素数位数の有限体という観点からは、
(q + 1)(q − 1) ≡ 0
の時点で「整域には零因子がないので、どちらかの因数が ≡ 0」とも言える。

p = x2 + y2 の整数解を使って、ガウス整数の範囲では
   p = (x + yi)(x − yi) ……… (☆☆)
   α = x + yi, β = x − yi と置くと p = αβ
という素因数分解が成り立つ。問題は、どうやって x, y の値を決定するか。

拡張された世界での「素数の定義」を思い出そう。α が素数ということは、その世界において、
   任意の積 AB が α の倍数のとき、必ず A または B が α の倍数になる
という意味だった。A = r + i, B = r − i と置くと、(☆)から
   AB = (r + i)(r − i) は p の倍数
ここで p は α の倍数なので、AB も α の倍数。α はガウス整数の素数だから、素数の定義から A または B は α の倍数。必要に応じて y の符号を逆にすること(α と β の名前を入れ替えることに当たる)により「A が α の倍数」と決め付けて差し支えない。すなわち…
   A = r + iα = x + yi の倍数
   言い換えると α = x + yi は A = r + i の約数

(☆☆)によると α = x + yi は p の約数でもあるので、α の値を得るためには、A = r + i と p の公約数を考えればいい。A と p の最大公約数は、互除法により機械的に決定され、それが求める α

なぜ「最大」公約数と言い切れるか。…仮に α が最大公約数でないとすると、A/α と p/α = β には、まだ単数以外の公約数が残っている。けれど β は素数なので、単数倍の違いを無視すると、約数は β 自身しかない。だから、公約数があるとすれば A/α も β で割り切れる(言い換えると A が αβ = p で割り切れる)。それは不可能。というのも A = r + i を自然数 p で割ると r/p + i/p になるが、その虚部は整数でない。つまり、ガウス整数として割り切れない。

このアルゴリズムでは、q ≡ b(p−1)/2 ≡ −1 (mod p) が必要条件。b が原始根であることは、(十分条件だが)必要条件ではない。例えば p = 13 のとき b = 5 は条件を満たす: q ≡ 512/2 ≡ −1 (mod 13)。この場合、54 ≡ 1 (mod 13) なので 5 は原始根ではないが、それでも構わない: r ≡ 512/4 ≡ 8 を使って gcd(r + i, p) = 3 + 2i から 32 + 22 = 13 が得られる。

***

これで大ざっぱな見通しは立ったが、まだ細部は穴だらけ。大前提となる「ガウス整数の世界でも最大公約数が存在して、互除法が通用する」ということも、メインの武器となる2平方の定理も、証明が必要。それらは後回しにして、とりあえず具体例で結果の確認。113 = 72 + 82 を上記のアルゴリズムで求めてみる。

b = 2 は、条件を満たさない: q ≡ 2112/2 ≡ 1 (mod 113)。

b = 3 は、条件を満たす: q ≡ 3112/2 ≡ −1 (mod 113)。このとき r ≡ 3112/4 ≡ 98。

<検算> r2 = 982 = 9604 = 85 × 113 − 1 ≡ −1 (mod 113)

あとは 98 + i と 113 の最大公約数を求めればいい:

  1. 113 を 98 + i で割る → 商は 1、余り 15 − i
  2. 98 + i を 15 − i で割る → 商は 6、余り 8 + 7i
  3. 15 − i を 8 + 7i で割る → 商は 1 − i で割り切れる

最後の余りが最大公約数 α = 8 + 7i なので、x = 8, y =7。これで 113 = 82 + 72 = 72 + 82 が得られた。ガウス整数の互除法は、決定論的ではない。例えば、こうしてもいい:

  1. 113 を 98 + i で割る → 商は 1、余り 15 − i
  2. 98 + i を 15 − i で割る → 商は 7、余り −7 + 8i [※注2]
  3. 15 − i を −7 + 8i で割る → 商は −1 − i で割り切れる

複素数の範囲で (98 + i) / (15 − i) = 6.5 + 0.5i なので、ガウス整数としての商(の近似値)は、実部が 6 or 7、虚部が 0 or 1 のどれでも、誤差は等しい。

[※注2] ここで得られた最大公約数 −7 + 8i は、最初に得られた 8 + 7i と少し異なるが、後者を i 倍すると前者、前者を −i 倍すると後者。つまり両者の違いは単数倍の違いにすぎず、どちらでも本質的に同じ。

✿ ✿ ✿


2021-10-25 「ゴルゴ13」分解計画(その2) ユークリッドの互除法

10. 互除法は、最大公約数を求める有力なツール。「最大公約数なんて、小学校の算数。分かり切ったこと」…と油断してはならない。ガウス整数(別名: 複素整数)のような「より一般的な世界」においては、そもそも最大公約数とは何か?が問題となり、「この二つの数には、最大公約数がない」という奇妙な現象さえ起こり得る。

具体例として、自然数の範囲で gcd(1326, 570) を求めてみる。

  1. ① 1326 を 570 で割ると 186 余る。
  2. ② 570 を 186 で割ると 12 余る。
  3. ③ 186 を 12 で割ると 6 余る。
  4. ④ 12 を 6 で割ると、割り切れる。

最後の余り 6 が 1326 と 570 の最大公約数。計算の仕方は、「A を B で割ると C 余る。B を C で割ると D 余る。C を D で割ると E 余る…」という単純な繰り返しを割り切れるまで、続けるだけ。

④ から、12 は 6 の倍数(言い換えれば 6 は 12 の約数)。③ は
  【ア】 186 = 12c + 6 …ここで c は 186 を 12 で割った整数商(つまり15)
という意味だが、12 は 6 の倍数であり(④で確認済み)、それを c 倍した 12c も当然 6 の倍数。さらに、6 自身はもちろん 6 の倍数なので、
  186 = 12c + 6 = 6の倍数 + 6の倍数
…も、6 の倍数。これで 186 も 6 の倍数であることが確認された。

同様に ② は
  【イ】 570 = 186b + 12 …ここで b は 570 を 186 で割った整数商(つまり3)
という意味だが、186b は 6 の倍数(【ア】で確認済み)、12 も 6 の倍数(④で確認済み)なので、それらの和 570 も 6 の倍数であることが分かる。

さらにさかのぼって ① は
  【ウ】 1326 = 570a + 186 …ここで a は 1326 を 570 で割った整数商(つまり2)
という意味だが、570a は 6 の倍数(【イ】で確認済み)、186 も 6 の倍数(【ア】で確認済み)なので、それらの和 1326 も 6 の倍数であることが分かる。

以上によって、1326 も 570 も 6 の倍数、言い換えると 6 は両者の公約数。…ここまでは簡単だが、それが「最大」公約数だという証拠は、どこにあるのか。

今 1326 と 570 に、何らかの公約数 x があったとしよう(実際 x=2 などがあるが、もっと大きい公約数もあるかもしれない)。言い換えると、1326 と 570 はどちらも整数 x の倍数だと仮定する。このとき【ウ】から
  186 = 1326 − 570a
となるが、仮定により 1326 も 570a も x の倍数なので、それらの差 186 も x の倍数(☆)。なぜなら
  1326 = mx, 570a = nx とすると 186 = mx − nx = (m − n)x …ここで m, n, m − n は整数。

同様に【イ】から
  12 = 570 − 186b
となるが、仮定により 570 は x の倍数、(☆)より 186b も x の倍数なので、それらの差 12 も x の倍数(☆☆)。さらに【ア】から
  6 = 186 − 12c
となるが、(☆)より 186 は x の倍数、(☆☆)より 12c も x の倍数なので、それらの差 6 も x の倍数。

結局、1326 と 570 にどんな公約数 x があるにせよ、必ず 6 は、その x の倍数。言い換えれば x は 6 の約数であり、従って 6 以下。これで 6 が「最大」公約数であることが分かった。

1326 と 570 に限らず、数値が何であっても、同様の議論が成り立つので、上記の方法(ユークリッドの互除法)によって、自然数の範囲であれば、最大公約数を求めることができる。

以上をきちんとした証明の形にすると、商 q1, q2, q3, … と余り r1, r2, r3, … についての数学的帰納法になる。きちんとしたい方は、自分で書いてみるか、教科書などを見てください…。本題はそれではなく「同じことがガウス整数の世界でも通用するのか」。

11. 上記の例に倣って「最大公約数」を再定義しよう。要素の間で、足し算・引き算・掛け算ができる世界 W を考える。W の2要素 a, b の最大公約数 g = gcd(a, b) とは、W における a と b の(0以外の)公約数のうち、次の性質を持つものである。
  性質 「a と b の任意の公約数 x は、g の約数である

少し分かりにくい…。まず「約数」とは何だろうか。「d が a の約数」ということは「a は d の倍数」ということであり、つまり d を何倍かすると a になるという意味。言い換えると、a = dq を満たすような q ∈ W が存在する、という意味。例えば、自然数の世界 N において 2 が 12 の約数であるということは、12 = 2q を満たす q ∈ N が存在するということ。そのような q は、もちろん存在する(q = 6)。同様に、12 = 3q も 12 = 4q も自然数の解を持つから、3 も 4 も 12 の約数だが、一方 12 = 5q は N の範囲に解を持たないから、自然数の世界において 5 は 12 の約数ではない。

a と b の公約数とは、「a の約数であり、b の約数でもあるような要素」。

当たり前のことをややこしく言ってるようだが、ここで思わぬ展開が…

「足し算・引き算・掛け算ができる世界」を考えているのだから、自然数の世界は、その前提を満たしていない(自然数の世界では、例えば 2 − 5 が定義されない)。もうちょっと広く、整数の世界 Z で考える必要がある。そうすると、1326 と 570 の最大公約数は最初に見たように 6 でもいいのだが、−6 も「1326 と 570 の最大公約数」の定義を満たす。1326 と 570 の任意の公約数 x は −6 の約数だから。

つまり「最大」公約数の「最大」は、もはや単純な大小関係ではない。そうではなく、親分・子分のような関係なのだ。

チンピラ「おれさまは 2。おれさまの空手を受けてみろ。1326 も 570 も割れてしまうぜ」

別のチンピラ「おれさまは 3。おれさまの空手を受けてみろ。1326 も 570 も割れてしまうぜ」

親分「おれさまは 6。てめえらは全員、おれさまの約数、雑魚だぜ。1326 と 570 を割ることにかけては、おれさまがボスだ」

もちろん −6 も同じことを言えるのだが、−1 倍の違いについては、こだわらない。このポリシーを「単数倍の違いを無視」と表現する。ここで「単数」とは 1 の約数のこと。通常の整数では 1 と −1 が単数であり、ガウス整数ではそれらに加えて i と −i も単数。整数の世界では、約数にせよ、素因数分解にせよ、単数倍の違いについてはあまり気にしない。自然数の世界でも、1 は単数。「なぜ 1 は素数でないのか」「素因数分解のとき × 1 を付け加えてはいけないのか」というのは、よくある疑問だが、これも「単数倍の違いについては考えない」ということに他ならない。1 は素数でもなく合成数でもなく単数というわけ。

新しい意味での最大公約数は、公約数のボス。「公約数のボス」とは、どんな公約数も自分の約数(いわば子分)として従属させているような存在。複素数であるガウス整数の世界では、例えば「−2 + 2i と −4 は、どちらが大きいのか」といわれても、簡単には答えようがない…「数が大きい・小さい」というコンセプトに執着して「最大」を定義しようとすると、無理が生じる。

これで、ガウス整数の互除法を考える準備が、半分整った。565+13i すなわち複素整数「ゴルゴ13」が完全にバラバラになる日も、そう遠くあるまい…。

✿ ✿ ✿


2021-10-30 「ゴルゴ13」分解計画(その3) ガウス整数での互除法

12. 自然数の互除法が、必ず終了(成功)する理由は単純: 自然数 a を自然数 b で割ったとき、余り r は、割る数 b より小さくなる。

  1. ① 1326 を 570 で割ると 186 余る。
  2. ② 570 を 186 で割ると 12 余る。
  3. ③ 186 を 12 で割ると 6 余る。
  4. ④ 12 を 6 で割ると、割り切れる。

「その r で割ったときの、そのまた余り」は r よりさらに小さくなる。…こうして、余りたちは、先へ行くほどだんだん小さくなるけど、負にはならないのだから、いつかは 0 になるしかない(つまり余りゼロで割り切れる)。この考え方は、負の整数を含めた整数の範囲の互除法でも、ほとんどそのまま成り立つ。けれど、ガウス整数の範囲で、
  「α を β で割ると ρ 余る」「そして ρ は β より小さい」
というコンセプトを成立させることは可能だろうか…。

例えば 10 + 5i を 5 で割ると、割り切れて、商は 2 + i。そのことから、直観的に、例えば:
  【ア】 10 + 8i を 5 で割ると、商が 2 + i で 3i 余る
  【イ】 そして 3i は 5 より「小さい」

この考えで正しいか?

13. 複素整数 α を複素整数 β で割ったとき、商が ϙ で余りが ρ になるということは:
  α = βϙ + ρ ここで ϙ, ρ も複素整数

注 ϙ(コッパ)は q に当たる古いギリシャ文字。

例えば 11 を 4 で割ると商が 2 で余りが 3。そのくらいなら簡単に暗算できるが、この「商が 2」という部分は、11/4 = 2.75 の端数を切り捨てた近似値と考えることもできる。

同様に、複素整数の商 ϙ としては、複素数 α/β に一番近い複素整数を近似値として選ぶことができる。【ア】の例では…
  (10 + 8i) / 5 = 2 + 1.6i に一番近い複素整数は 2 + 2i
…なのだから、次のように考えた方が「近似精度が高い」:
  【ウ】 10 + 8i を 5 で割ると、商が 2 + 2i で −2i 余る
  (余りは 10 + 8i から 5 を 2 + 2i 回、引いたもの)
  【エ】 そして −2i は 5 より「小さい」

【ア】【イ】の計算も間違ってないが、その余り 3i より【ウ】【エ】の余り −2i の方が、絶対値が小さい。アルゴリズムとしては…
  複素数の範囲で α = A + Bi を β = C + Di で割る(A, B, C, D は普通の整数)。
  ゴチャゴチャするが、ただの割り算なので、次のように(分母を有理化して)普通に計算できる。
  α/β = (A + Bi) / (C + Di) = [(A + Bi)(C − Di)] / [(C + Di)(C − Di)]
  = [(AC + BD) + (BC − AD)i] / (C2 + D2)
  = (AC + BD) / (C2 + D2) + [(BC − CD) / (C2 + D2)]i

結果の実部 s = (AC + BD) / (C2 + D2) も虚部 t = (BC − AD) / (C2 + D2) も有理数。それらに一番近い整数をそれぞれ S, T として
  ϙ = S + Ti
を「ガウス整数の世界での α 割る β の整数商」とすればいい。s または t にちょうど 0.5 の端数がある場合、「一番近い整数」の意味が曖昧だが、便宜上、そのときは絶対値が小さい方を選ぶ、とでもしておこう。いずれにしても、α 割る β の商を ϙ とすると、自動的に余りは、
  ρ = α − βϙ
となる。その意味は…
  「余りが“最小”になるように α から β を何回引けますか?」
  「ϙ回、引けますよ。ϙ回、引けば余りは α − βϙ ですね」
ρ は(さらに“小さく”できないという意味において)最善の余り。

14. ここで「余り ρ が、割る数 β より“小さく”なる」という意味を明確にしよう。素朴に考えると、絶対値で大小を区別できる。例えば、複素整数 β = C + Di の絶対値は
  |β| = √(C2 + D2)

このアイデアは「大小の区別」という点ではパーフェクトだが、値が実数。実数の世界では「だんだん小さくなるが、負にならないので、いつかは0になる」という「互除法の証明の仕方」が通用しない。例えば
  5.1, 5.01, 5.001, 5.0001, 5.00001, …
という列は、だんだん小さくなるものの、無限に続けても0にはならない。そこで一工夫して、絶対値の2乗を大きさの基準としよう。
  size(β) = |β|2 = C2 + D2
邪魔くさい根号もなくなり、すっきり。

複素整数を考えているので C, D などは整数。すると、関数 size() の値は、整数の2乗と整数の2乗の和なので 0以上の整数。余り ρ が 0 なら(そしてそのときに限って)、size(ρ) = 0 となる。この size() で測った「余りのサイズ」が、割る数 β のサイズより必ず小さくなることを示せば、ガウス整数の世界でも互除法が成立する。実際、0以上の整数の範囲で、だんだん小さくなるものは、いつかは0になるしかない。つまり、互除法を続けると、いつかは余りがゼロになって割り切れる!

前記のように α = A + Bi を β = C + Di で割って、こうなるとしよう:
  複素数としての商 α/β = s + ti (割り算が成立する前提として β ≠ 0 とする
  ガウス整数としての商 ϙ = S + Ti
  余り ρ = α − βϙ  ……… (☆)

size(ρ) < size(β) を示したい。大ざっぱには、余りと割る数の比 ρ/β のサイズが1未満で、「余り ρ から、もうこれ以上 β を引けない」みたいな状況(引き算自体はできるが、引き算すると、余りのサイズがかえってでかくなり逆効果)。α, β の定義と(☆)から:
  ρ/β = (α − βϙ) / β = α/β − ϙ
  = (s + ti) − (S + Ti) = (s − S) + (t − T)i
  要するに ρ/β = (s − S) + (t − T)i  ……… (☆☆)

S, T は、それぞれ s, t に一番近い整数なので、s − S も t − T も、絶対値 ½ 以下。従って(☆☆)の両辺の絶対値の2乗を考えると:
  |ρ/β|2 = (s − S)2 + (t − T)2 ≤ (½)2 + (½)2 = ½
  両辺を |β|2 倍して |ρ|2 ≤ ½ × |β|2 < |β|2  (15.参照)
   注: |β|2 = 0 の可能性があるなら、最後の < は ≤ になるが、
   β ≠ 0 なので、その可能性はない

  つまり size(ρ) < size(β)

これが示したいことだった!

幾何学的イメージとしては、ガウス整数は、複素平面上の格子点(格子は、辺の長さ1の正方形)。複素数の範囲での商 α/β は、α と β−1 の積で、どこだか分からないけれど、とにかく複素平面上のどこかの点に当たる。そして、複素平面全体が正方形の格子で覆われているのだから、その点がどこにあるとしても、必ず近くに格子点(=ガウス整数)がある。最悪のパターン(格子点があまり近くにない)は、正方形のど真ん中に点がある場合だが、その場合でも、最寄りの格子点とのずれは、実部・虚部それぞれ ½ を超えない。

15. 上記では |ρ/β|2 ≤ ½ の両辺を |β|2 倍して
  |ρ|2 ≤ ½ × |β|2
を得た。この計算の根拠は「絶対値同士の積は、積の絶対値」ということ(そして不等式の両辺に正の数を掛けても、不等号の向きは変わらない)。…それは実数の範囲では、当たり前: 例えば ±2 と ±3 の積は、符号次第で 6 または −6 だが、いずれにせよ絶対値は 6。先に絶対値を考えても、±2 の絶対値は 2、±3 の絶対値は 3、両者の積は 6。…複素数の範囲でも、機械的計算で、この事実を確かめることができる。任意の2個の複素数
  X = A + Bi, Y = C + Di
について:
  |X| = √(A2 + B2), |Y| = √(C2 + D2) なので
  |X| |Y| = √[(A2 + B2)(C2 + D2)]
  …根号内を展開すると A2C2 + A2D2 + B2C2 + B2D2 (★)
一方、先に積を計算すると:
  XY = (A + Bi)(C + Di) = (AC − BD) + (AD + BC)i なので
  |XY| = √[(AC − BD)2 + (AD + BC)2]
  …根号内を展開すると A2C2 − 2ABCD + B2D2 + A2D2 + 2ABCD + B2C2
  ±2ABCD は打ち消し合ってなくなるので、これは(★)と等しい。

要するに |X| |Y| = |XY|  (絶対値同士の積は、積の絶対値)

従って(X = ρ/β, Y = β とすると):
  |ρ/β|2 × |β|2 = |ρ/β| × |ρ/β| × |β| × |β|
  = (|ρ/β| × |β|) × (|ρ/β| × |β|)  ← 丸かっこ内は絶対値同士の積
  = |(ρ/β) × β| × |(ρ/β) × β|  ← 積の絶対値
  = |ρ| × |ρ| = |ρ|2

ところで、(★)の計算と全く同様に、次の二つの値は等しい:
  |X|2 |Y|2 = (A2 + B2)(C2 + D2)
  |XY|2 = (AC − BD)2 + (AD + BC)2
絶対値の2乗を「サイズ」と定義したのだから、次のように書くことができる:
  size(X) size(Y) = size(XY)

この size() は、ノルム(norm)と呼ばれるもので、ガウス整数の場合は「絶対値の2乗」だが、もう少し一般化した議論では、通例「ノルムとは、共役の数との積」と定義される。任意のガウス整数
  α = x + yi (x, y は普通の整数)
について言えば、その共役複素数 x − yi もガウス整数であり、両者の積…
  (x + yi)(x − yi) = x2 + y2
…つまり α のノルムは、絶対値の2乗 size(α) = |α|2 と同じ値。定義だけでは、何の役に立つのかピンとこないコンセプトだけど…。「ノルム」という名前も、初めて聞くと難しそうな感じがするかもしれないが、「絶対値のようなものだけど、値が整数に限られるので扱いやすい」と考えればいいだろう。上記の
  norm(X) と norm(Y) の積は norm(XY) に等しい
という性質は、シンプルだけどすごく役に立つ(次回参照)。

✿ ✿ ✿


2021-11-01 「ゴルゴ13」分解計画(その4) ユークリッド最強

16. 複素整数 G = 565 + 13i と a = 123 + 45i の最大公約数は何か?

最大公約数を求めるには、互除法(別名: ユークリッドのアルゴリズム)を使うことができる。前回、ガウス整数の範囲でも互除法が成り立つことを(一応)証明したので、その確認も兼ねて、上の例題を考えてみよう。昔のアニメでも「計算しても、経験しなきゃ、ぜんぶ分からない」と言ってた…。前回の計算によると、有理数の範囲では:
  (A + Bi) ÷ (C + Di) = (AC + BD) / N + i(BC − AD) / N
ここで分母の N は C2 + D2 の略で、割る数 C + Di のノルム。分子は、実部が「実実・虚虚の和」、虚部が「内内マイナス外外」つまり、内側の積から外側の積を引いたもの。

実部  虚部   実部  虚部       実実=AC  虚虚=BD
A + Bi   C + Di
外側  内側   内側  外側       内内=BC  外外=AD

(別にこの公式を暗記しなくても、13.の方法で普通に計算すれば同じ結果になる。)

実際に経験してみよう。G ÷ a の場合、こうなる:
  A = 565, B = 13, C = 123, D = 45
  N = C2 + D2 = 1232 + 452 = 17154
  AC + BD = 565 × 123 + 13 × 45 = 70080
  BC − AD = 13 × 123 − 565 × 45 = −23826
だから:
  G ÷ a = (70080 / 17154) − (23826 / 17154)i
これに一番近いガウス整数は何だろう? 実部は、ざっと 70/17 なので 4(なぜなら 17 × 4 = 68)、虚部は一見して −1。つまり、整数商を q1 とすると:
  q1 = 4 − i
余りを b とすると:
  b = G − aq1 = (565 + 13i) − (123 + 45i)(4 − i)
  = (565 + 13i) − (492 − 123i + 180i + 45)
  = (565 + 13i) − (537 + 57i) = 28 − 44i

これは G ÷ a が q1 余り b になること、つまり G = aq1 + b を意味している(検算として aq1 + b を求めてみよう)。重大なポイントとして:
  割る数 a のノルム 1232 + 452 = 17154 よりも
  余り b のノルム 282 + 442 = 2720 の方が小さい!

同様に a ÷ b を計算すると、商 q2 = 2i、余り c = 35 − 11i。余り c のノルム 352 + 112 = 1346 は、さらに小さい。検算として a = bq2 + c を確かめよう。計算苦手でも、電卓でやっちゃえばいいし~

続けて b ÷ c を計算すると、商 q3 = 1 − i、余り d = 4 + 2i。余り d のノルム 42 + 22 = 20 は、ますます小さい。検算は b = cq3 + d。

続けて c ÷ d を計算すると、商 q4 = 6 − 6i、余り e = −1 + i。余り e のノルム 12 + 12 = 2 は、もう後がないくらい小さい。検算は c = dq4 + e。

続けて d ÷ e を計算すると、商 q5 = −1 − 3i で割り切れる(つまり余りのノルム 0)。検算は d = eq5

さすがは信頼のユークリッド。最後の余り e = −1 + i が、G と a の最大公約数。

複素整数 G = 565 + 13i は、虚部が素数だし「これ以上分解できない」ようにも思えるが、実は e = −1 + i という約数を持っている。

17. ホントにそれが約数なのか、実際に G を e で割ってみよう。割る数のノルムは 2、「実実・虚虚の和」は −565 + 13 = −552、「内内マイナス外外」は −13 − 565 = −578 なので:
  G / e = (−552 / 2) + (−578 / 2)i = −276 − 289i
  すなわち G = 565 + 13i = (−1 + i)(−276 − 289i)

複素整数「ゴルゴ13」は、分解されてしまった! 殺し屋のカルマだろうか…

しかし、上記の分解表現、やたらとマイナスだらけで美しくない。せめて第2因子から −1 をくくり出して
  −(−1 + i)(276 + 289i) = (1 − i)(276 + 289i)
と書いてあげるのが、仁義というものだろう。さらに
  1 − i = i4 + i3 = i3(i + 1)
なのだから、次のように書けば、単数以外の全因子からマイナスをなくせる:
  565 + 13i = −i(1 + i)(276 + 289i)

単数倍の違いは本質と無関係だが、本質的な問題として、この分解は素因数分解だろうか? 276 + 289i は、さらに分解できるかもしれないような感じだが…?

この種の疑問にはノルムが有効。α = βγ と分解できる場合(どの因子も単数以外とする)、両辺のノルムを考えると…
  norm(α) = norm(βγ) = norm(β) norm(γ)
…となって、ノルムも分解できる(ここで前回の「積のノルムは、ノルムの積」という性質が威力を発揮)。まず (1 + i) のノルムは 2 なので、(普通の意味では)1 × 2 という「分解」しかできない。けれどノルム 1 に対応するガウス整数は ±1 または ±i に限られ、どれも単数。つまり、ノルム 1 の因数では、本当の分解にならない。従って、ガウス整数 α のノルムが(普通の意味での)素数なら、α 自身もガウス整数として分解不可能。
  n = norm(276 + 289i) = 2762 + 2892 = 159697
についても、(普通の意味での)素数であることを確かめられる。n は 4002 = 160000 より小さいので、ブルートフォースによって、「n は400未満のどの素数でも割り切れない」ということを確かめればいい。

18. 具体例を試すだけでも「ガウス整数の範囲でも互除法が成り立ちそう」という感触が得られるけど、具体例はあくまで具体例。「成り立つ例がある」というだけじゃ「いつでも成り立つ」という証明にはならない。そこで、前々回の「その2」では互除法の一般原理を確認、「その3」ではガウス整数にもその原理が当てはまることを確認した。

普通の整数の世界内では、足し算・引き算・掛け算はいつでもできるが、割り算ができる保証はない。例えば 17 と 2 は整数だが、17 ÷ 2 は整数にならない。

この種のいろいろな世界の中では、互除法が成り立つ世界(正式名称: ユークリッド整域)は最強。互除法が使えるなら、「最大公約数を持つ」「素因数分解ができる」といった望ましい条件は、全て自動的に満たされる(もちろん、そう言い切るためには、証明が必要だが)。そして「互除法が成り立つ」ということの本質は…
  その世界の任意の要素 a、b について(ただし b ≠ 0 とする)、
  「a を b で割ると r 余る」「余り r のサイズは、割る数 b のサイズより小さい」
…もっと正確に言えば:
  任意の a, b に対して、特定の q, r が存在して
  a = bq + r かつ f(r) < f(b) が成り立つ。
ここで f() は、その世界の各要素に 0 以上の整数を対応させる関数で、余りのサイズの目安となる(微妙に違う理論構成も可能。その辺の事情については、49.参照)。ガウス整数
  z = x + yi (x, y は普通の整数)
については、
  f(z) = norm(z) = x2 + y2
…とすることができて、それは z の絶対値の2乗に等しい。z 自身と「z の共役複素数」の積にも等しい。

ユークリッドのアルゴリズムが成り立つ世界とは、「割り算ができる保証はないけど、“余り付きの割り算”なら普通にできる保証がある」という世界。四則演算が全部できる世界に近い。

だったら、最初から「四則演算が全部できる世界」(例: 有理数の世界)を考えた方がいい? まあ、そうかもしれないけど、四則演算が全部できると、例えば素数だったはずの 17 が、0 以外の任意の数で割り切れてしまう(17 ÷ 2 = 8.5 のように)。それじゃ、味気ない!

G = 565 + 13i の分解は、説明のための例で、実は本筋と無関係。本題は、ピタゴラス・トリオ。ガウス整数の方向から、ピタゴラス・トリオを眺めてみたい…。そのためには、ガウス整数の性質をある程度、はっきりさせておく必要がある。

✿ ✿ ✿


2021-11-02 〔付記〕 159697 の素数判定

G = 565 + 13i をガウス整数の範囲で分解すると:
  G = −i(1 + i)(276 + 289i)

最後の因数 (276 + 289i) は、norm(276 + 289i) = 159697 が素数なので、これ以上分解できない。

159697 が素数であることは、コンピューターを使って試行除算すれば簡単に分かるが、手計算の場合、素数表があるとしても78回の割り算が必要(400以下の素数78個で一つずつ割ってみる)。素数表を作るところから始めると(あるいは、面倒だからと400以下の全部の奇数で割ると)約200回の割り算が必要だろう。

そこで、次のように論じる手もある: m = 159697 は、底 2 と底 3 の Miller–Rabin テストに合格する。100万以下に、そのような擬素数はないので、m は真の素数。

奇数 m に対して、底 b のミラー・ラビンを行うには、まず次のように m − 1 を 2 で割れるだけ割った指数を考える:
  e0 = m − 1 = 159696 これは2で割り切れるので(偶数なので)、2 で割ると…
  e1 = 159696/2 = 79848 これも偶数なので 2 で割ると…
  e2 = 79848/2 = 39924 これも偶数なので 2 で割ると…
  e3 = 39924/2 = 19962 これも偶数なので 2 で割ると…
  e4 = 19962/2 = 9981 偶数でないので、ここで停止

後は b の e4 乗、b の e3 乗、b の e2 乗、b の e1 乗を考えるだけ(e0 乗は考えない)。結果がどこかで ≡ −1 (mod m) になれば合格。もし ≡ 1 (mod m) になった場合、それが最初の指数乗(上の例では e4 乗)の場合に限り合格。…それ以外は、全部不合格。不合格になったら、素数ではない(フェルマーの小定理の応用)。合格したら、素数である確率が高いが、まれに例外もある。

b = 2 の場合:
  A ≡ 29981 ≡ 32867 (mod 159697)  ……… (★)
それを使って:
  B ≡ 219962 ≡ A2 ≡ 32867 × 32867 ≡ 49181 (mod 159697)
  C ≡ 239924 ≡ B2 ≡ 49181 × 49181 ≡ 159696 ≡ −1 (mod 159697) 合格

b = 3 の場合:
  I ≡ 39981 ≡ 49181 (mod 159697)  ……… (★★)
これは上記 B と同じ値なので:
  J ≡ 319962 ≡ 49181 × 49181 ≡ −1 (mod 159697) 合格

問題は、(★)や(★★)の 9981 乗の計算法。真面目に9981回、掛け算すると、とんでもない桁数になってしまう。筆算でそんな数の割り算をするくらいなら、最初の方法で普通に100回くらい割り算した方が楽。…「大きな指数の剰余」について、定石的なアルゴリズムの仕組みは次の通り。(★)の「9981乗」を例とする。

【ステップ1】 2 の「べき」…
  28 = 256, 29 = 512, 210 = 1024, 211 = 2048, 212 = 4096, 213 = 8192
…などを考えると、9981 から引ける最大のべきは 213 = 8192。
  9981 − 8192 = 1789 ここから引ける最大のべきは 210 = 1024
  1789 − 1024 = 765 ここから引ける最大のべきは 29 = 512
  765 − 512 = 253 ここから引ける最大のべきは 27 = 128
  253 − 128 = 125 ここから引ける最大のべきは 26 = 64
  125 − 64 = 61 ここから引ける最大のべきは 25 = 32
  61 − 32 = 29 ここから引ける最大のべきは 24 = 16
  29 − 16 = 13
つまり、こう書ける:
  9981 = 8192 + 1024 + 512 + 128 + 64 + 32 + 16 + 13 (☆)

【ステップ2】 次のように「べき剰余の表」を作ろう:
  216 = 65536 (←直接計算した)
  232 = 216 × 216 = 65536 × 65536 = 4294967296 ≡ 76178 (mod 159697)
  264 = 232 × 232 ≡ 76178 × 76178 = 5803087684 ≡ 18098 (mod 159697)
  同様に 2128 ≡ 180982158754 (mod 159697)
  2256 ≡ 158754290764
  2512 ≡ 907642133951
  21024 ≡ 1339512113966
  22048 ≡ 1139662 ≡ 92146
  24096 ≡ 921462 ≡ 115220
  28192 ≡ 115220236790

【ステップ3】 (☆)から逆にたどって、次のように少しずつ計算していく。
  213 = 8192 (←直接計算した)
  229 = 213 × 216 = 8192 × 65536 = 536870912 ≡ 129295 (mod 159697)
積の第1因子は直前の結果、第2因子は上で作った「べき剰余の表」を参照している。
  261 = 229 × 232 = 129295 × 76178 = 9849434510 ≡ 122035 (mod 159697)
  2125 = 261 × 264 = 122035 × 18098 = 2208589430 ≡ 139617 (mod 159697)
以下同様に:
  2253 = 2125 × 2128 = 139617 × 158754 ≡ 91194
  2765 = 2253 × 2512 = 91194 × 133951 ≡ 144267
  21789 = 2765 × 21024 = 144267 × 113966 ≡ 87984
  29981 = 21789 × 28192 = 87984 × 36790 ≡ 32867

これで(★)が得られた。

底が 3 の場合についても(☆)の分解を再利用して、同様に進めることができる。「400以下の素数をリストアップして、割り算78回」や「400以下の全奇数で割り算」より、少しは楽だろうか? 6桁の掛け算と12桁の割り算が、それぞれ20回程度。少なくとも心理的には、78回の試し割りより、楽かも…

プログラム的な実装において、ステップ1は、指数を2進表記することに当たる。「べき剰余の表」をあらかじめ作って保持するのはメモリーの無駄なので、通常、表を作ることなく、ステップ2とステップ3を同時進行的に実行する。この手法は「繰り返し2乗法」と呼ばれ、素数性の判定に限らず、用途が広い。

6桁の 159697 なら、実際問題、試行除算でも簡単に判定できるけど、これが10桁や20桁の数になると、試行除算は(少なくとも手計算では)大変。一方、ミラー・ラビンを多重に行うことで、約25桁までの数なら、容易に素数性を確定判定できる。これは比較的最近の知見であり、この方法で確定的に判定できる範囲が20桁に到達したのは2014年、25桁に到達したのは2015年らしい。
参考資料 Strong Pseudoprimes to Twelve Prime Bases
https://arxiv.org/abs/1509.00864

✿ ✿ ✿


2021-11-03 ガウス整数から見た 3² + 4² = 5² 本当とは思えないほど美しい

19. x2 + y2 = z2 を満たす3個の自然数 (x, y, z) は、「ピタゴラス派の三つ子」(Pythagorean triples)と呼ばれる(愛称: ピタゴラス・トリオ)。
  52 + 122 = 132 (実際 25 + 144 = 169)
  82 + 152 = 172 (実際 64 + 225 = 289)
…このような数の並びには、不思議な魅力がある。
  1202 = 14400
  1192 = (120 − 1)2 = 14400 − 240 + 1 = 14161
  134 = 1692 = (170 − 1)2 = 28900 − 340 + 1 = 28561
  ゆえに 1192 + 1202 = 134 (実際 14161 + 14400 = 28561)

(x, y, z) がピタゴラス・トリオなら (2x, 2y, 2z) や (3x, 3y, 3z) などもピタゴラス・トリオだが、以下では、互いに素な(=2以上の公約数のない)トリオに話を限る。x と y の一方が奇数、他方が偶数(理由は後述)。便宜上、奇数の側を x(最初の変数)、偶数の側を y(2番目の変数)としよう。例えば、
  82 + 152 = 172 の代わりに
  152 + 82 = 172 と書くことにする。

定理 上記の条件において、どのピタゴラス・トリオも、次の形を持つ:
  (m2 − n2, 2mn, m2 + n2)
  ここで m, n は互いに素な自然数で、一方が偶数、他方が奇数。n は m より小さい。
逆に、この条件を満たすトリオは、ピタゴラス・トリオとなる。

補題1 任意の偶数 2k の平方 4k2 は、4 の倍数。一方、任意の奇数 2k + 1 の平方 4k2 + 4k + 1 = 4(k2 + k) + 1 は「4で割ると1余る数」。

この補題から、もし仮に m, n が両方奇数だとすると、m2 + n2「4で割ると1余る数」と「4で割ると1余る数」の和…つまり「4で割ると2余る数」。けれど、ピタゴラス・トリオの最後の数は平方数 z2 に対応しているのだから、同じ補題によって、z が偶数なら4で割り切れ、z が奇数なら「4で割ると1余る」。どっちのパターンになるにしても、「4で割ると2余る数」は z2 と等しくなり得ない。従って m, n は、両方奇数にはならない。両方偶数にもならない(なったとすると、トリオの3数は全部偶数になってしまい、互いに素という前提に反する)。より一般的に、m, n が2以上の公約数を持つことはない。

ピタゴラス・トリオ (x, y, z) の x と y について、一方が偶数・他方が奇数にならなければならない理由も、全く同じ。

そうすると、x2 + y2 は偶数2乗と奇数2乗の和、つまり偶数と奇数の和、それは奇数なのだから、z は(「どっちのパターンになるにしても」とは言ったものの)、実際には必ず奇数。

定理の (m2 − n2, 2mn, m2 + n2) がピタゴラス・トリオであること:
  (m2 − n2)2 + (2mn)2 = (m2 + n2)2
…この関係については機械的計算で確認できるけど、この天下り的な式は、一体どこからやって来たのか。どうしてこういう形になるのか。この型以外のピタゴラス・トリオは存在しないのか?

ガウス整数の立場から考えてみたい。

20. x2 + y2 = z2 をガウス整数の範囲で分解して
  (x + yi)(x − yi) = z2
と書いてみる。α = x + yi, β = x − yi と置くと:
  αβ = z2

今 α と β の最大公約数を g とすると、α も β も g の倍数だから:
  α + β = 2x も g の倍数、
  α − β = 2yi も g の倍数。
つまり 2x と 2yi は、どちらも g で割り切れる。仮定により x と y は互いに素。「普通の意味で互いに素な2整数は、ガウス整数の範囲でも互いに素」という主張をひとまず受け入れるなら(後で証明する)、上記のことは「g は 2 の約数」という意味を持つ。ガウス整数の範囲では、2 は
  12 + 12 = 1 − i2 = (1 + i)(1 − i)
と分解されるので、もし g が単数以外の「2 の約数」なら、g は 1 + i または 1 − i という因数言い換えれば、約数)を含む。実際には、α も β もこのような因数を持ち得ないので(※)、当然、α と β の公約数 g も、このような因数を持たない。つまり g は、2 の約数といっても単数であり、g = 1 or −1 or i or −i。要するに α と β は、ガウス整数として互いに素

(※) 簡単に言えば、x と y は偶奇が異なるのだから α = x + yi は、例えば 3 + 4i や 10 + 7i のような数であり、1 ± i の倍数になることは無理っぽい(β についても同様)。…もう少しきちんと言うと、1 ± i はノルム2だから、1 ± i の倍数は、ノルムの値が2の倍数。ところが α のノルムも β のノルムも、x2 + y2 であり、x と y は偶奇が異なるのだから、x2 + y2 は奇数――つまり α のノルムも β のノルムも、2の倍数ではない。詳しくは、35.の付録参照。

一方、積 αβ は、z2 に等しいのだから平方数。従って、α と β は、それぞれ単体でも平方数(またはその単数倍)。どういうことか。例えば、z がガウス整数の範囲で、次のように 4 個の相異なる素因数を持つとしよう:
  z = PQRS
その場合、
  αβ = z2 = P2 Q2 R2 S2
について、
  α = P2Q2 = (PQ)2, β = R2S2 = (RS)2  (α と β はそれぞれ平方数)
のようなことは、あるかもしれないけど、
  α = PQ2, β = PR2 S2  (α と β は平方数でも平方数の単数倍でもない)
のように「ある一つの平方因子 P2 を α と β で分け合うこと」は、あり得ない(あり得たとすると、α と β は両方 P の倍数となり、互いに素という事実に反する)。

x と y がピタゴラス・トリオの最初の2数だとすると、x + yi はガウス整数として平方数の単数倍。つまり、何らかのガウス整数 A + Bi と単数 ε = ±1 or ±i が存在して、
  x + yi = α = ε(A + Bi)2 = ε[(A2 − B2) + 2ABi]  ……… (♪)
と書ける。

(♪)の右辺の A, B が両方偶数なら(あるいは両方奇数なら)、右辺は 2 の倍数になり、右辺に等しい α も 2 の倍数になってしまうが、それは不可能。なぜなら、既に見たように α は 1 + i の倍数ではなく、1 − i の倍数でもないので、ましてや (1 + i)(1 − i) = 2 の倍数ではない。…だから A と B は偶奇が異なる。

代わりに、次のように考えてもいい。α の共役複素数 β = x − yi は、(♪)の虚部の符号を逆にしたもの:
  もし ε = ±1 なら β = ε[(A2 − B2) − 2ABi]
  もし ε = ±i なら β = ε[−(A2 − B2) + 2ABi]
…となるが、いずれにしても A と B は偶奇が異なる。なぜなら、もし偶奇が一致すると、α と β はどちらも 2 で割り切れることになるが、それは「α, β が互いに素」という事実に反する。

ここでは x が正の奇数、y が正の偶数と仮定しているのだから、(♪)において、
  ε = 1, x = A2 − B2, y = 2AB
  または ε = −1, x = B2 − A2, y = −2AB
が題意に適する。ε = 1 なら m = |A|, n = |B| と置き、ε = −1 なら m = |B|, n = |A| と置けば、19. の定理の形になる。

19. の定理に合わせるためには m > n でなければならない。ε = 1 の場合、y = 2AB が正なのだから A, B は「両方正」または「両方負」。わざわざ「両方負」と考えてややこしくする必要はないのだが(A, B が「両方正」でも「両方負」でも x, y は同じ値)、どっちの符号を選ぶとしても、x = A2 − B2 も正なんだから A の絶対値の方がでかい。m > n だから、絶対値のでかい |A| が m になる。ε = −1 ならその反対で、x = B2 − A2 が正なのだから、絶対値のでかい |B| が m になる。この場合、y = −2AB が正なので、A, B の一方が正で他方が負。下記の例参照。

<例1> 32 + 42 = 52 つまり x = 3, y = 4 のとき:
  α = 3 + 4i = (2 + i)2 従って ε = 1, A = 2, B = 1 (m = 2, n = 1)

<例2> 52 + 122 = 132 つまり x = 5, y = 12 のとき:
  α = 5 + 12i = (3 + 2i)2 従って ε = 1, A = 3, B = 2 (m = 3, n = 2)

<例3> 72 + 242 = 252 つまり x = 7, y = 24 のとき:
  α = 7 + 24i = −(1 + 2i)4 = −(−3 + 4i)2 従って ε = −1, A = −3, B = 4 (m = 4, n = 3)

21. 例3では、上の書き方では ε = −1 だが、次のように ε = 1 の形に書き換えることもできる:
  α = (−1)(−3 + 4i)2 = i2(−3 + 4i)2 = [i(−3 + 4i)]2
  = (−3i + 4i2)2 = (−4 − 3i)2 = (4 + 3i)2 なぜなら X2 と (−X)2 は等しい
  従って ε = 1, A = 4, B = 3 (m = 4, n = 3)

<例4> 332 + 562 = 652 つまり x = 33, y = 56 のとき:
  α = 33 + 56i = −(1 + 2i)2(2 + 3i)2 = −(−4 + 7i)2 従って ε = −1, A = −4, B = 7
  書き換えると α = 33 + 56i = (−7 − 4i)2 = (7 + 4i)2 従って ε = 1, A = 7, B = 4

このようにして ε = 1 に統一した場合、状況を要約すると…

ガウス整数の範囲では x2 + y2 = (x + yi)(x − yi) だが、ピタゴラス・トリオ (x, y, z) の場合、このように分解した因子の x + yi が再び平方数 (A + Bi)2 になる

これは著しい事実である(高木先生風の表現w)。

通常の整数の世界では、x2 + y2 は「平方数の和」。ガウス整数として解釈すると、それは
  (x + yi)(x − yi)
という2因子の「積」であり、しかも2因子は互いに素なので、どちらの因子も、右辺の z2 の性質――すなわち「平方数」という属性――を受け継ぐ。

もう一方の因子 x − yi については?

補題2 X, Y を任意のガウス整数とし、それらの共役複素数(虚部の符号を反転させた数: それらもガウス整数である)をそれぞれ conj(X), conj(Y) とすると:
  conj(XY) = conj(X) conj(Y)  つまり積の共役は、共役同士の積

〔証明〕 X = a + bi, Y = c + di とする。XY = (ac − bd) + (bc + ad)i なので:
  conj(XY) = (ac − bd) − (bc + ad)i   ← 虚部の符号を反転させた
これは、次の値と等しい:
  conj(X) conj(Y) = (a − bi)(c − di) = (ac − bd) + (−ad − bc)i □

この補題から、x + yi = (A + Bi)2 のとき、両辺の共役を考えれば x − yi = (A − Bi)2 となる。

というのも、X = Y = A + Bi とすると XY = (A + Bi)2 = x + yi。このとき conj(X) = conj(Y) = A − Bi で、conj(XY) = x − yi。これを補題2に当てはめた。

つまり
  x2 + y2 = z2
という2乗の足し算は、
  (x + yi)(x − yi) = (A + Bi)2(A − Bi)2 = [(A + Bi)(A − Bi)]2 = (A2 + B2)2
という2乗の掛け算と等価。例えば:
  32 + 42 = 52 ⇒ (3 + 4i)(3 − 4i) = (2 + i)2(2 − i)2 = (22 + 12)2
  52 + 122 = 132 ⇒ (5 + 12i)(5 − 12i) = (3 + 2i)2(3 − 2i)2 = (32 + 22)2

本当とは思えないほど、美しい!

注 この表現は「x が奇数、y が偶数」という便宜上の取り決めに依存している。「x が偶数、y が奇数」だとしても、変数名・足し算の順序が入れ替わるだけだが、その場合、上記 ε が ±i になってしまい、ダイレクトに「2乗の掛け算」の形にできないため、少し見通しが悪くなる。

19. の定理は天下り的で、直観的な意味が不明だったが、ガウス整数の立場から眺めると透明で、必然的。

Die gaußschen Zahlen;
Zu schön, um wahr zu sein. (ガウス整数、鳥肌もんだぜっ)

なぜドイツ語(笑)…? いや、ガウスだしw ガウッシェン・ザーレン、ツー・ショーン、ツー・ザインって、なんか語呂いいじゃんw

でも、証明の技術的細部がまだ甘い。ガウス整数の最大公約数は互除法から分かるとして(「ゴルゴ13」分解計画)、ガウス整数の素因数分解については、できるかどうかも未確認。19. の定理を使って小さい範囲のピタゴラス・トリオの一覧表を作り、それぞれの例について A + Bi の具体的構造を調べてみないと、上記の考察についても実感が湧いてこない。冒険は続く…

✿ ✿ ✿


2021-11-06 ガウス整数から見た 3² + 4² = 5² (その2)

22. 互いに素な(=2以上の公約数を持たない)自然数 x, y について。ガウス整数の範囲では
  x2 + y2 = (x + yi)(x − yi)  ……… ①
と分解できる。もし第3の自然数 z があって
  x2 + y2 = z2  ……… ②
が成り立つなら、①右辺の因子 x + yi と x − yi 自身も、それぞれガウス整数の範囲では平方数となり、
  x + yi = (A + Bi)2  ……… ③
  x − yi = (A − Bi)2  ……… ④
と書ける。A, B は、普通の意味での整数(以上が前回の粗筋)。

③の右辺を展開・整理すると:
  x + yi = (A2 − B2) + 2ABi
この等式の実部・虚部を比較すると:
  x = A2 − B2  ……… ⑤
  y = 2AB  ……… ⑥

⑥から、y は2の倍数、つまり偶数。x と y は互いに素なので、x は奇数。ところで、⑤では A も B もどうせ2乗されてしまうので、A, B の符号はどうでもいい。一方、y は自然数(正の整数)なのだから、⑥によれば、A と B は両方プラスか、または両方マイナスでなければならない。わざわざマイナスを使う必要はないので、両方マイナスの場合には、符号を逆にした正の数をあらためて A, B としよう(その場合、③④右辺の丸かっこ内の符号も逆転するが、丸かっこ内はどうせ2乗されるのだから、問題なし)。

要するに、A と B は自然数で、A の方がでかい。そして A と B は互いに素(なぜなら、A と B が2以上の公約数 g を持つと、⑤⑥から x, y はどちらも g の倍数になってしまう。これは x と y が互いに素、という前提に反する)。従って A, B が両方偶数ということはないが、実は A, B が両方奇数ということもない(両方奇数だと、⑤は、x イコール「奇数の2乗、引く、奇数の2乗」イコール「奇数、引く、奇数」イコール「偶数」になってしまい、x が奇数という前提に反する)。

②を z2 = x2 + y2 と書いて、その右辺に⑤⑥を代入すると:
  z2 = (A2 − B2)2 + (2AB)2 = (A2 + B2)2
  z = A2 + B2  ……… ⑦
  前半の変形は、いつでも成り立つ等式
   (s + t)2 = s2 + 2st + t2
   (s − t)2 = s2 − 2st + t2
   (s + t)2 = (s − t)2 + 4st
  の3番目に、s = A2, t = B2 を当てはめたもの。

23. 以上の情報によって、ピタゴラス・トリオを体系的に構成できる。

まず A = 1 の場合。B は A より小さい自然数なので、条件を満たすものがない。強いて言えば B = 0 だが、そのとき⑤⑥⑦から x = A2 − B2 = 1, y = 2AB = 0, z = A2 + B2 = 1 となり、確かに
  12 + 02 = 12
が成立。けれど、これは当たり前過ぎて面白くない。やはりゼロは反則としましょう!

A = 2 の場合。B は A より小さい自然数なので、B = 1 しか可能性がない。この A, B は「互いに素で偶奇が異なる」という条件を満たすので、ちゃんとしたピタゴラス・トリオを生成する。⑤⑥⑦から:
  x = 22 − 12 = 3
  y = 2 × 2 × 1 = 4
  z = 22 + 12 = 5
  検証 32 + 42 = 52 ← 正しい(9 + 16 = 25

次に A = 3 の場合。このとき B は偶数なので B = 2 に限られる。
  x = 32 − 22 = 5
  y = 2 × 3 × 2 = 12
  z = 32 + 22 = 13
  検証 52 + 122 = 132 ← 正しい(25 + 144 = 169

今度は A = 4。このとき B は奇数なので B = 1 または B = 3。可能性が2個になった。まず B = 1 から。
  x = 42 − 12 = 15
  y = 2 × 4 × 1 = 8
  z = 42 + 12 = 17
  検証 152 + 82 = 172 ← 正しい(225 + 64 = 289

<暗算の仕方> 152 = (10 + 5)2 = 100 + 2⋅10⋅5 + 25 = 100 + 100 + 25
172 = (10 + 7)2 = 100 + 2⋅10⋅7 + 49 = 100 + 140 + 49

A = 4, B = 3 なら:
  x = 42 − 32 = 7
  y = 2 × 4 × 3 = 24
  z = 42 + 32 = 25
  検証 72 + 242 = 252 ← 正しい(49 + 576 = 625

<暗算の仕方> 242 = (20 + 4)2 = 400 + 2⋅20⋅4 + 16 = 400 + 160 + 16
252 = (20 + 5)2 = 400 + 2⋅20⋅5 + 25 = 400 + 200 + 25

一見「ピタゴラス・トリオは完全に制圧された」という感じがする。実際、この調子で A = 5 のとき B = 2 or 4、A = 6 のとき B = 1 or 5、A = 7 のとき B = 2 or 4 or 6 などと、ピタゴラス・トリオを順々に漏れなく生成できる(A = 6, B = 3 は互いに素でないので除外した)。

けど、本当に問題が解決したと言えるだろうか。これで心から納得がいくだろうか?

⁂

得られた公式は本物だけど、その導出にはギャップがある。今のところ「ガウス整数の範囲でも一意的な素因数分解ができるとすれば…」という「仮定の話」にすぎない。頂上からの景色は確かにきれいだが、本当にこの道は通行可能なのか?

面倒かもしれないけど、その道を一歩一歩、自分で歩いてみてこそ、全てのもやもやが解消され、すっきりした気分と達成感を味わえるだろう…。

⁂

(付録) 12以下の範囲の A, B から作られる31種のピタゴラス・トリオ

\\ pari
joken_o_mitasu(A,B) = { A%2 != B%2 && gcd(A,B) == 1; }
kekka_o_kaku(A,B) = { my( x=A^2-B^2, y=2*A*B, z=A^2+B^2 );
    printf( "[ %2d ] A=%2d, B=%2d ::: (%d,%d,%d)\n",
             c++, A, B, x, y, z );
}
c=0; \\ counter
for( A=1, 12, for( B=1, A-1, joken_o_mitasu(A,B) && kekka_o_kaku(A,B) ) );

出力

[  1 ] A= 2, B= 1 ::: (3,4,5)
[  2 ] A= 3, B= 2 ::: (5,12,13)
[  3 ] A= 4, B= 1 ::: (15,8,17)
[  4 ] A= 4, B= 3 ::: (7,24,25)
[  5 ] A= 5, B= 2 ::: (21,20,29)
[  6 ] A= 5, B= 4 ::: (9,40,41)
[  7 ] A= 6, B= 1 ::: (35,12,37)
[  8 ] A= 6, B= 5 ::: (11,60,61)
[  9 ] A= 7, B= 2 ::: (45,28,53)
[ 10 ] A= 7, B= 4 ::: (33,56,65)
[ 11 ] A= 7, B= 6 ::: (13,84,85)
[ 12 ] A= 8, B= 1 ::: (63,16,65)
[ 13 ] A= 8, B= 3 ::: (55,48,73)
[ 14 ] A= 8, B= 5 ::: (39,80,89)
[ 15 ] A= 8, B= 7 ::: (15,112,113)
[ 16 ] A= 9, B= 2 ::: (77,36,85)
[ 17 ] A= 9, B= 4 ::: (65,72,97)
[ 18 ] A= 9, B= 8 ::: (17,144,145)
[ 19 ] A=10, B= 1 ::: (99,20,101)
[ 20 ] A=10, B= 3 ::: (91,60,109)
[ 21 ] A=10, B= 7 ::: (51,140,149)
[ 22 ] A=10, B= 9 ::: (19,180,181)
[ 23 ] A=11, B= 2 ::: (117,44,125)
[ 24 ] A=11, B= 4 ::: (105,88,137)
[ 25 ] A=11, B= 6 ::: (85,132,157)
[ 26 ] A=11, B= 8 ::: (57,176,185)
[ 27 ] A=11, B=10 ::: (21,220,221)
[ 28 ] A=12, B= 1 ::: (143,24,145)
[ 29 ] A=12, B= 5 ::: (119,120,169)
[ 30 ] A=12, B= 7 ::: (95,168,193)
[ 31 ] A=12, B=11 ::: (23,264,265)

✿ ✿ ✿


2021-11-13 バシェ/ベズの定理

24. 次の定理は、一見無味乾燥に思えるが、実はめちゃくちゃ役立つ。例えば、mod p での逆数計算に使えるし、「素数とは何か?」という本質を考えるとき、重要な鍵となる。

定理(Bachet–Bézout) 任意の2整数 a, b について、それらの最大公約数を g とするとき、
  ax + by = g
は、整数解 x, y を持つ。

<例> a = 123 と b = 45 の最大公約数は 3 なので、123x + 45y = 3 は解を持つ。…ユークリッドの方法(互除法=ごじょほう)で最大公約数を求めると、副産物として、この事実は自然に分かる:
  ① 123 を 45 で割ると 33 余る
  ② 45 を 33 で割ると 12 余る
  ③ 3312 で割ると 9 余る
  ④ 129 で割ると 3 余る
  93 で割ると、割り切れる
  最後の余り 3 が、最大公約数。

①は 123 = 45q + 33 という意味だが(q は 123 を 45 で割った整数商、具体的には 2)、ちょっと変形すると
  ①′ 33 = 123 − 45q = 123 × 1 + 45 × (−2)
つまり「a = 123 と b = 45 を使って、余り 33 を aX + bY の形で書ける」。

同様に ② から:
  45 = 33 × 1 + 12
  12 = 45 − 33 × 1 = 45 + 33 × (−1)
これは「余り 12 を b + 33 × 整数 の形で書ける」という意味だが、①′ から、33 は aX + bY の形で書けるので、次のように 12 も同じ形で書ける:
  ②′ 12 = 45 + [123 × 1 + 45 × (−2)] × (−1) = 123 × (−1) + 45 × 3

さらに ③ から、余り 9 も 123X + 45Y の形で書ける:
  33 = 12 × 2 + 9
  9 = 33 − 12 × 2  ここで①′ と ②′ を使うと:
  ③′ 9 = [123 × 1 + 45 × (−2)] − [123 × (−1) + 45 × 3] × 2 = 123 × 3 + 45 × (−8)

全く同様にして、④ の余り 3 も、123X + 45Y の形で書ける:
  12 = 9 × 1 + 3
  3 = 12 − 9 × 1  ここで②′ と ③′ を使うと:
  3 = [123 × (−1) + 45 × 3] − [123 × 3 + 45 × (−8)] × 1 = 123 × (−4) + 45 × 11

つまり 123x + 45y = 3 の一つの解は x = −4, y = 11。

25. 上記は単なる一つの具体例だが、同様の手順で、ax + by = g の解 x, y は、いつでも単純計算で求まる(順々に機械的に、上の式を下の式に代入しているだけ)。のみならず、互除法が使える限り、全く同様の議論が成り立つので、この定理は、整数の世界に限らず、任意の「互除法が使える世界」(正式名称: ユークリッド整域)に拡張される

ただし a または b が 0 の場合、個別的な注意が必要になりそうなので、面倒を避けるため、今は「どちらも 0 でない」としておく。

特に、任意のユークリッド整域 W の任意の2元 a, b について、もしそれらが互いに素なら…言い換えれば g = gcd(a, b) = 1 ならば…上の定理は、こうなる:
  「ax + by = 1 を満たす x, y ∈ W が存在する」

17世紀フランスの数学者バシェ、18世紀フランスの数学者ベズ。上記の定理を導いた彼ら自身、そこに秘められた深い意味に、気付く由もなかった。折しもベズがその著書を出版したのは、ガウスが1歳の誕生日を迎えた頃。この赤ん坊がやがて青年となり、数論の世界に革命を巻き起こす…。

✿ ✿ ✿


2021-11-17 直観的に分かる「第一補充法則」 かえって疑問が増えるけどw

26. 数学自体が難しいというより、なぜこんなことをやるの?というパースペクティブが捉えにくいかも…。教科書的に硬く考えず、適当に散歩してみたい。4で割って1余る素数は、バニラの香りがする。

フェルマーの小定理の重大性は、明らかだろう。身近な例として、私たちが安全にメールをやり取りするためのPGP(正確に言えばRSA暗号)だって、鍵を作るとき、フェルマーの小定理の考え方を使ってる。

フェルマーの小定理(簡易版) 3 以上の任意の素数 p が与えられたとき、2 の p−1 乗は、p の倍数より 1 大きい。

<例1> 素数 7 が与えられた。27−1 = 26 = 64 は、7 の倍数より 1 大きい。実際 63 = 7 × 9 は 7 の倍数だから、64 = 7の倍数 + 1。

フェルマーの小定理(続き) 2 という数を p と互いに素な任意の自然数に置き換えても、同じことが成り立つ。

<例2> 例1の 2 を 3 に置き換える。37−1 = 36 = 729 も、7 の倍数より 1 大きい。

<例3> 例1の 2 を 5 に置き換える。57−1 = 56 = 15625 も、7 の倍数より 1 大きい。

フェルマーの小定理(フォーマル・バージョン) 任意の奇素数 p について、bp−1 ≡ 1 (mod p)。ここで b は p と互いに素な任意の自然数。(言葉で言うと: b の p−1 乗を p で割ると 1 余る。

≡ 1 (mod p) という記号は、「p の倍数より 1 大きい」言い換えれば「p で割ると 1 余る」という意味。正式には「p を法として 1 と合同」「コングルエント・トゥ 1、モジュロ p」と読まれるのだが、めんどくさいので「イコール1、モッドp」でいいでしょ。意味が分かれば、記号の読み方なんてどーでもいーじゃん?

何やら数学教師&優等生諸君が怒ってるようだが、無視、無視w

27. 「フランスに行けば、おいしいワインを飲める」という主張は事実かもしれないが、だからといって「フランスに行かなければ、おいしいワインを飲めない」ということにはならない。フェルマーの小定理は、p−1 乗すれば ≡ 1 になるという主張。…それは「p−1 乗しなければ ≡ 1 にならない」という意味ではない。例えば、
  【ア】 26 = 64 ≡ 1 (mod 7)
は上で確かめたけど、別に6乗しなくたって、3乗の時点で
  【イ】 23 = 8 ≡ 1 (mod 7)
が成り立つ。

けれど p−1 乗される数 b は選べるわけで、中には p−1 乗して初めて ≡ 1 (mod p) になるような b も必ずある。そのような b を原始根(げんしこん)という。小定理の証明原始根の存在については、そのうちゆっくり研究するとして、とりあえず【ア】をこう書くことができる:
  26 = (23)2 ≡ 1 (mod 7)
23 を X と置くと:
  【ウ】 X2 ≡ 1 つまり X ≡ 1 or −1 (mod 7)

本当はもう少し繊細に扱う必要があるけど、常識で考えればそうなる*12乗して 1 になる数は、±1 のどっちかでしょ?)。【イ】では X ≡ 1 となった。一方、べき乗される数 b が原始根なら「途中」で 1 になることはないので、必然的に他方の選択肢 X ≡ −1 となる。例えば:
  【エ】 36 = 729 ≡ 1 (mod 7)
は上で確かめたけど、6乗の「半分」の3乗の時点では:
  【オ】 33 = 27 ≡ −1 (mod 7)
…ここで ≡ −1 (mod 7) は「7 の倍数マイナス 1」という意味(28 は 7 の倍数。27 はそれマイナス 1)。33 を X と置くと【ウ】と同様だが、今度は 1 or −1 の部分で、マイナス側が選択された!

観察 フェルマーの小定理から bp−1 ≡ 1 (mod p) だが、p−1 乗の「半分」…つまり b の (p−1)/2 乗…を計算すると ≡ 1 または ≡ −1 (mod p) になる。特に b が原始根なら:
  b(p−1)/2 ≡ −1

ところで、p が 7 のような 4k+3型の素数(愛称: チョコレート素数)の場合、「そのまた半分」を考えることはできない。だって、p = 4k+3 なら p−1 の半分 (p−1)/2 = (4k+2)/2 = 2k+1 は奇数。「そのまた半分」が無理な理由は、「奇数は、整数の範囲では半分にできないから」。当たり前。

*1 手っ取り早い説明: X ≡ 1 と X ≡ −1 が X2 ≡ 1 の(つまり X2 − 1 ≡ 0 の)解であることは、直接確認でき*2、そして 2次方程式の解の個数は2個以下なので、それ以外の解はない。もっと直接的な説明: X2 − 1 ≡ 0 つまり
  (X + 1)(X − 1) ≡ 0
が成り立つためには、上の式の左辺の2個の因子のどちらかが 0 になる必要がある(整域には零因子がないので)。つまり X + 1 ≡ 0 または X − 1 ≡ 0 が成り立つ必要があり、だから X ≡ 1 または X ≡ −1 が成り立つ必要がある。

*2 別の角度から: (X + 1)(X − 1) ≡ 0 (mod p) とは (X + 1)(X − 1) が p で割り切れること。素数の性質(理論構成によって定義または定理)として、p は (X + 1) と (X − 1) の少なくとも一方を割り切る。これは X + 1 ≡ 0 または X − 1 ≡ 0 を意味し、従って X ≡ −1 または X ≡ 1 を意味する。

28. 一方、p が 4k+1型の素数(愛称: バニラ素数)なら、「p−1 の半分」乗…つまり (p−1)/2 乗…を考えられるのはもちろん、「そのまた半分」乗…つまり (p−1)/4 乗…を考えることもできる。だってさぁ p = 4k+1 [例: p = 13] なら (p−1)/2 = (4k)/2 = 2k は偶数なんだから[例: (13−1)/2 = 6]、その数はもう一度2で割り切れるでしょ。例:
  【カ】 2(13−1) = 212 = 4096 ≡ 1 (mod 13)
  【キ】 2(13−1)/2 = 26 = 64 ≡ −1 (mod 13)
  【ク】 2(13−1)/4 = 23 = 8 ≡ 8 (mod 13)

【ク】は、2乗すると ≡ −1 になる数。事実 82 = 64 ≡ −1。原始根を2乗・3乗・4乗…すると、p−1 乗して初めて 1 になるのだから、(p−1)/2 乗や (p−1)/4 乗では、まだ ≡ 1 にならない。軽く整理すると:
  【ケ】 p が 4k+1型の素数(バニラ)なら x2 ≡ −1 (mod p) を満たす x が存在する(例えば、原始根 b を使って、x ≡ b(p−1)/4 を計算すればいい)。
  【コ】 p が 4k+3型の素数(チョコレート)なら x2 ≡ −1 (mod p) を満たす x は存在しない(b として何を選ぼうが、そもそも (p−1)/4 乗という計算ができない)。

「x2 ≡ −1 (mod p) が解を持つこと・持たないこと」を、難しい言葉でそれぞれ「−1 は法 p の平方剰余(じょうよ)・平方非剰余(ひじょうよ)」という。「−1 が平方剰余であること」は、次のように書かれることがある(ルジャンドルの記号):
  【サ】 (−1 | p) = 1  ……【ケ】の場合。右辺の +1 は「Yes, 平方剰余」という意味
−1 が平方非剰余であることは
  【シ】 (−1 | p) = −1  ……【コ】の場合。右辺の −1 は「No, 平方剰余じゃない」という意味
と書かれる。どちらになるかは p がバニラ(4k+1型)か、チョコ(4k+3型)かによって決まる。【サ】【シ】を一つの式にまとめると:
  【ス】 (−1 | p) = (−1)(p−1)/2

【ス】は「平方剰余の相互法則の第一補充法則」(なげえ名前だな)と呼ばれ、直観的な意味が分かりにくいことで有名(?)だが、p が 4k+1型なら (4k)/2 = 2k で偶数だから【ケ】【サ】になり【ス】右辺の指数も、それに見合って、−1 の偶数乗は 1。一方、p が 4k+3型なら (4k+2)/2 = 2k+1 で奇数だから【コ】【シ】になり、【ス】右辺の指数も、それに見合って、−1 の奇数乗は 1。【ス】の直接的な意味はさておき、上のように考えると、第一補充法則は意外と単純かも…?

29. それがどうガウス整数と結び付くの?

素数 p は、2個の平方数の和の形で書けることもある。p = 13 なら 13 = 4 + 9 = 22 + 32 のように…。一方、p = 11 も素数だけど、どう頑張っても、11 を 2個の平方数の和で書くことはできない。

一般に p = A2 + B2 と書けたと仮定すると(A, B は自然数)、当然 A2 + B2 は p で割り切れる(商は 1、余り 0)。割り切れるも何も、両者は等しいのだから、「5 は 5 で割り切れる」みたいな当たり前の話。A2 + B2 を p で割ると 0 余るのだから:
  A2 + B2 ≡ 0 (mod p)
  A2 ≡ −B2 (mod p)
両辺に B2 の逆数を掛けると:
  A2 / B2 ≡ −B2 / B2 つまり…
  【セ】 (A / B)2 ≡ −1 (mod p)
【セ】は、とある数 (A/B) を平方したら ≡ −1 (mod p) になった…という意味。そのような「とある数」が存在するか?という問題は、
  x2 ≡ −1 (mod p) を満たす x が存在するかしないか?
…つまり、mod p において −1 が平方剰余か非剰余か?という問題。既に見たように、その答えは「p は 4k+1型か、それとも 4k+3型か?」によって決まる。4k+3型なら、第一補充法則により【セ】は絶対に成り立たない。どう頑張っても、p = 11を2個の平方数の和では書けないのは、11 が 4k+3型素数(チョコレート)だから。p = 13 ならOKなのは、13 が 4K+1型素数(バニラ)だから。

注意深い読者はここで疑問を抱くかもしれない。「ちょっと待て、A と B は自然数だろ。自然数の世界で 1/B なんて反則じゃん。例えば B = 3 なら 1/3 は自然数じゃないし」…実は、A, B は確かに自然数だが、それ以降の式変形は普通の等式 = でなく、合同の記号 ≡ になってる。この演算が行われる世界では、自然数や整数の世界と違って普通に割り算ができ、必ず B の逆数 1/B が存在する(例えば B ≡ 3 (mod 13) なら 1/B ≡ 9。実際、3 × 9 = 27 ≡ 1 (mod 13) なので 9 は 3 の逆数)。ただし「法 p が素数」ということが前提。この点については、機会があれば、もっときちんと考えてみたい。ここでは具体例の確認だけ…
  A = 2, B = 3 は A2 + B2 = 13 ≡ 0 (mod 13) を成立させる。
  このとき 1/B ≡ 9 なので(上述)、A/B ≡ A × (1/B) ≡ 2 × 9 ≡ 18 ≡ 5 (mod 13)
  この数は実際に【セ】を満たす: (A/B)2 ≡ 52 ≡ 25 ≡ −1 (mod 13)
  つまり −1 は法 13 の平方剰余!

雑な議論だが、大筋において「4k+3型の素数は、絶対に2個の平方数の和の形で書けない!」という結論が得られた。逆に「4k+1型の素数なら、2個の平方数の和の形で書ける可能性がある」ことが示唆されるが、上の議論だけでは「必ず書ける!」という確信(フェルマーのクリスマス定理)までは得られない。

第一補充法則によれば p がバニラ素数の場合、x2 ≡ −1 (mod p) を満たす x が存在する。ちょっと変形すると:
  x2 + 1 ≡ 0 (mod p)
つまり x2 + 1 は p で割り切れる。この左辺は、ガウス整数の範囲では…
  x2 + 1 = x2 − (−1) = x2 − i2 = (x + i)(x − i)
…と分解されるので、x2 + 1 が p で割り切れるのなら、それと等しい (x + i)(x − i) も、当然 p で割り切れる。

ところで、一般の整域(例えばガウス整数)における素数の定義っていうのは、意外と複雑。「任意の積 ab が p で割り切れるとき、必ず a が p で割り切れるか、または b が p で割り切れる」…素数とは、そういう性質を持つ p のこと(詳細は 36. 以降)。上記の場合、(x + i)(x − i) は p で割り切れるものの、ガウス整数 x + i もガウス整数 x − i も、ガウス整数の範囲において p では割り切れない(無理やり割っても、結果の x/p + i/p などはガウス整数にならない)。ということは、ガウス整数の範囲では、バニラ素数 p は、もはや素数ではない。

もしガウス整数の範囲でも、ちゃんと素因数分解ができるとするなら(重大な「もし」である!)、バニラ素数 p はもはや素数でない以上、さらに分解され、例えば p = αβ となるはず。ここで α = s + ti は、とあるガウス整数(s, t は通常の整数)、β もまた同様。実は α = s + ti なら β は共役の s − ti となり(その理由はノルムと関係ある)、ガウス整数の範囲での分解…
  p = (s + ti)(s − ti)
…が成立。右辺を展開すると:
  p = s2 + t2
つまり普通の意味での素数 p は、それが 4k+1型なら、必ず2平方数の和で表される!

「ゴルゴ13」分解計画 9. も参照。

以上の考察には、あちこちにギャップがある。まず、最も大切なピースが一つ抜けている: そもそも素数の定義とは…? 「1 と自分自身」以外では割り切れない数、という古典的定義では駄目なの?

これは見掛け以上に深い問題だけど、表面的な話として、任意のガウス整数は i で割り切れる。「1 と自分自身」以外では割り切れない数、という定義だと、全てのガウス整数は(「1 と自分自身」以外の i で割り切れるのだから)素数でない…ガウス整数の世界には素数がないので素因数分解もできない…という結論になってしまい、それだけでも非常に具合が悪い。「じゃあ素数とは何なのか」「どういう根拠で、何をどう定義すればいいのか」…考えるモチベーション、素朴な好奇心がちょっとは湧いてくる。

ガウス整数などの少し広い観点から眺めるとき、いつしか一つの予感が芽生える。古典数論の雑多な話題(フェルマーの小定理、クリスマス定理、平方剰余、補充法則など)は、どれも同じ一つの本質から生じてくるのではないか…。「数の不思議」の根底にある真相が分かり、全てをすっきり透明に見通すことができれば、それはすてきなことだろう。

とびきり楽しい冒険しよう!

✿ ✿ ✿


2021-11-23 ガウス整数から見た 3² + 4² = 5² (その3)

30. ガウス整数の範囲では x2 + y2 = (x + yi)(x − yi) だが、ピタゴラス・トリオ (x, y, z) の場合、このように分解した因子の x + yi が再び平方数 (A + Bi)2 になる。他方の因子 x − yi も同様の平方数 (A − Bi)2 になる(21.参照)。理由が分かれば「当たり前」かもしれないが、
  32 + 42 = 52 ⇒ (3 + 4i)(3 − 4i) = (2 + i)2(2 − i)2 = (22 + 12)2
  52 + 122 = 132 ⇒ (5 + 12i)(5 − 12i) = (3 + 2i)2(3 − 2i)2 = (32 + 22)2
といった構造は、本当とは思えないほど美しい。素直に感動!

もっとも x + yi の形…例えば 3 + 4i…を (A + Bi)2 の形…例えば (2 + i)2…に変換する魔法は、まだ修得していない。要するに「ガウス整数の世界の素因数分解」だが、その研究は後のお楽しみ!

呪文でホラ変身よ> 3 + 4i パリエルレムリン・スイートミント、ガウス素数になぁれ~ = (2 + i)2

逆方向の変換法は、既に分かっている。例えば (2 + i)2 つまり A = 2, B = 1 を x + yi の形にするには、2乗の部分を展開するだけ。一般に、こうなる(「その222.):
  x = A2 − B2
  y = 2AB
  z = A2 + B2
分解されているものを掛け合わせるのは簡単だが、掛け合わされているものを分解するのは難しい…。「自分は数学が得意だから、そんなの全然難しくないよ」と考える人もいるかもしれないが、「計算量的に本当に難しい」というのが多くの専門家の予想であり、実際この予想が、日常、インターネット上で使われるRSA系の暗号システムの基礎となっている。

とはいえ最近…大ざっぱに2010年くらいから…「難しいといっても、原理的にはやればできるし」「パスワードとかクラックされたら、セキュリティー的にやばいし」というムードが強まって、「RSAでも桁数をさらにでかくしよう」「RSA系自体が不安だから、楕円曲線暗号に移行しよう」という流れになっている。楕円なら安全? それもまた、誰にも分からない未解決問題。数論の世界には、未知がいっぱい。教科書に書いてあることを覚えればいい、なんていう、甘い話じゃない。ある意味「ロマン」だが、難しくて途方に暮れてしまう。

31. ピタゴラス・トリオについては、上記の A, B の性質がよく分かっているので、次の例のように、いくらでも機械的に生成できる(「その2」付録)。

[  1 ] A= 2, B= 1 ::: (3,4,5)
[  2 ] A= 3, B= 2 ::: (5,12,13)
[  3 ] A= 4, B= 1 ::: (15,8,17)
[  4 ] A= 4, B= 3 ::: (7,24,25)
[  5 ] A= 5, B= 2 ::: (21,20,29)
[  6 ] A= 5, B= 4 ::: (9,40,41)
[  7 ] A= 6, B= 1 ::: (35,12,37)
[  8 ] A= 6, B= 5 ::: (11,60,61)
[  9 ] A= 7, B= 2 ::: (45,28,53)
[ 10 ] A= 7, B= 4 ::: (33,56,65)

これをじっと眺めると、トリオの最後の数 z に素数が多いことが目に付く: 5, 13, 17, 29 など…。これらの素数は、どれも「4で割ると1余る素数」(愛称: バニラ素数)のようだ。それって、実は当たり前。だってさぁ、
  z = A2 + B2
って、2個の平方数の和じゃん? しかも、AとBって、一方が偶数、他方が奇数(22.参照)。偶数の2乗は、4の倍数(★)。奇数の2乗は、4の倍数プラス1(☆)。それらの和(★プラス☆)も、4の倍数プラス1。だから z は、素数であっても素数でなくても、必ず「4で割ると1余る数」。

(★) どんな偶数も、2の倍数なので 2n の形を持つ(n は整数: 例えば、偶数6は 2×3)。その2乗は: (2n)2 = 4n2。これは「4 の n2倍」なので、4の倍数。

(☆) どんな奇数も、2の倍数より1大きいので 2n+1 の形を持つ(n は整数: 例えば、奇数7は 2×3+1)。その2乗は: (2n+1)2 = 4n2 + 4n + 1 = 4(n2 + n) + 1 = 4の倍数 + 1。

具体例を眺めると、逆にどのバニラ素数も、必ずピタゴラスの z となるように思える(この予想は実は正しい)。けれど今は、別の部分に注目したい。

z が全部素数になるなら「ありがちな展開」かもしれないけど、なんか 5 の倍数が交じってるよ? 上の例では 25 と 65。何だ、この連中? そっちの方が気になる。

暫定的に「ピタゴラス・トリオの z は、バニラ素数または5の倍数になる」という予想が浮かぶ。ところが、上記の「付録」をよーく見ると、この予想は正しくない:

[ 29 ] A=12, B= 5 ::: (119,120,169)

この z = 169 は 132 であり、素数でも5の倍数でもない。予想に合わない「反例」ってやつ。素早く予想を修正して「素数でない z は、5の倍数または平方数」と言いたい気もするが、本当だろうか?

話がちょっと戻るが、まだ導入してない x + yi の素因数分解の技術。やり方はともかく、結果としては…
  [1] 3 + 4i = (2 + i)2
  [2] 5 + 12i = (3 + 2i)2
  [3] 15 + 8i = (4 + i)2
  [4] 7 + 24i = −(1 + 2i)4
  [5] 21 + 20i = (5 + 2i)2
  [6] 9 + 40i = (5 + 4i)2
…だいたいは、前述の通り、そのまんま「何かの2乗」の形になってる。[4] だけ、何やら妙な形。4乗なので、これも「何かの2乗」の形に書き直すことができ(20. & 21.参照)、上記 30. の主張に間違いはないのだが…。「ピタゴラス・トリオの式の左辺を(ガウス整数として)分解した因子」という同じ性質のものなのに、なぜ一つだけ他と違う形なのだろう?

「素数でない z は、どういう数か?」という疑問。そしてこの、釈然としない現象。

実は、この二つのもやもやは関連していて、全てをすっきり透明に見通せる観点が存在している。…それは分かってしまえば簡単なことで、客観的には当たり前のことなので、いちいち教科書には記されてないだろうけど、主観的には意外と面白い。どんな小さな命題だって、自力で独立に発見した事柄は、キラキラ心に残るだろう。

24.では「バシェ/ベズの定理」を導入して、懸案の「ガウス整数の一意分解」を攻略する伏線を張った。教科書的には「一意分解ができること」を証明してから、具体例を挙げるのが正しいだろうけど、「一意分解」という抽象的性質を考える前に、「分解の具体例」を体験して感覚をつかむ方が、たぶん分かりやすい…。記事にまとめるとき、余計な脱線を削除して、説明が抜けてるところを補い、整理したい。

✿ ✿ ✿


2021-11-24 ガウス整数 13i の因数分解 実例研究その1

当面の目標は「ガウス整数の世界でも一意的な素因数分解ができる」という命題だけど、実際の証明の前に実例をいくらかいじって、感覚をつかんでおきたい。ユークリッド整域なので「既約」と「素数」の違いを隠したまま話を進めることもでき、その方がお手軽だが…。「その二つは異なる概念」というのが、問題の核心だろう。ある時点で、思い切りカメラを引いて「世界を外側から眺めること」が必要になる。まぁ流れに任せて適当に…。

32. 純虚数のガウス整数 13i を分解できるだろうか?

13 はバニラ素数なので、2平方数の和。42 = 16 は大き過ぎるから、12 = 1, 22 = 4, 32 = 9 の範囲で和を考える。簡単な試行錯誤の結果(総当たりでも数パターンしかない):
  13 = 22 + 32 = (2 + 3i)(2 − 3i)
  つまり 13i = (2 + 3i)(2 − 3i)i = (2 + 3i)(2i + 3)  (*)

出てきた因子の A = 2 + 3i などは、もうこれ以上分解できないのだろうか?

ここでクリティカルな役割を果たすのが「ノルム」(15.参照)。0でないガウス整数 A が、2個のガウス整数の積 PQ に分解されたとしよう。つまり
  A = PQ
が成り立ったとしよう。上の式の両辺のノルムを考えると:
  norm(A) = norm(PQ) = norm(P) norm(Q)
A = 2 + 3i の場合、norm(A) = 13 は普通の意味での素数なので、これ以上意味のある分解はできない。強いて言えば norm(P), norm(Q) の一方が13、他方が1で 13 = 13 × 1 という分解が考えられるが、ノルム1の数は ±1, ±i に限られ、これらは真の約数ではない(普通の素因数分解で、因子 1 が無視されるのと同じ)。要するに、ノルムが素数なら、もうそれ以上、分解できない

この場合、2 と 3 の順序を入れ替えて次のように書いても、最終的な結論は同じ:
  13 = 32 + 22 = (3 + 2i)(3 − 2i)
  つまり 13i = (3 + 2i)(3 − 2i)i = (3 + 2i)(3i + 2)  (*)と同じ

✿ ✿ ✿


2021-11-25 ガウス整数 1 + 13i の因数分解 実例研究その2

33. いきなり α = 1 + 13i を分解しろと言われても、どこから手を付けていいのか分からない感じだが…。ガウス整数が分解されるときには、対応するノルムも、普通の整数の範囲で分解されるのだった。とりあえずノルムを調べてみよう:
  norm(α) = norm(1 + 13i) = 12 + 132 = 170 = 2 × 85

85 はさらに 5 で割れるが、今は 2 の方に集中する。状況を再確認:
  α = βγ なら norm(α) = norm(β) norm(γ)
  ここでは α = 1 + 13i で norm(α) = 170, norm(β) = 2, norm(γ) = 85。

要するに、ノルムが 2 のガウス整数 β を見つければ、α = βγ のような分解が成り立つ可能性がある。具体的に α/β が割り切れれば、α/β = γ と置いて α = βγ となる。注意点として
  α = βγ なら norm(α) = norm(β) norm(γ)
というのは確かだが、逆が成り立つ保証はない。つまり、
  norm(α) = norm(β) norm(γ) だからといって α = βγ とは限らない。
言い換えると α/β が割り切れる保証はない。保証はなくても可能性はあるので、試すだけ試してみたい。

問題 norm(β) = 2 を満たすガウス整数 β は何か?

先に感覚的なアプローチ、後からきっちりしたアプローチを…。感覚的には、「普通の整数をガウス整数の範囲で分解したいなら、2平方数の和で書けばいい」:
  2 = 12 + 12 = 12 − i2 = (1 + i)(1 − i)
従って β = 1 + i または β = 1 − i という可能性がある。

試しに α = 1 + 13i を第一候補 β = 1 + i で割ってみると(割り算の仕方は13.参照):
  α / β = (1 × 1 + 13 × 1) / 2 + [(13 × 1 − 1 × 1) / 2]i  【ア】
  = 14 / 2 + (12 / 2)i = 7 + 6i

イェーイ、割り切れたっ! 【ア】実部の分子は「実実・虚虚の和」、【ア】虚部の分子は「内内マイナス外外」、【ア】の分母は β のノルム(16.参照)。やり方を無理に丸暗記しなくても、13.のように普通に計算すれば同じ結果が得られる。とりあえず…

α = 1 + 13i = (1 + i)(7 + 6i)  【イ】

…ここまでは分解できた。石橋をたたく心構えで【イ】の右辺を展開してみる:
  (7 + 6i) + (7 + 6i)i = (7 + 6i) + (7i − 6) = 1 + 13i
うん、ちゃんと【イ】の左辺と等しい。

34. 【イ】右辺の第1因数 1 + i は、そのノルムが2(普通の意味での素数)なので、これ以上、分解できない。第2因数 7 + 6i については、そのノルムが 49 + 36 = 85 = 5 × 17 なので、ノルム 5 のガウス整数で割り切れる可能性がある。ノルム 5 のガウス整数(…名前がないと不便なので、ここでは、ノルム 5 のガウス整数を f と呼ぶことにする)を作るため、5 を2平方数の和として表現する:
  5 = 22 + 12 = 22 − i2 = (2 + i)(2 − i)
f = 2 + i または f = 2 − i は、ノルム5を持つ。

試しに f = 2 + i で割ってみる:
  (7 + 6i) / (2 + i) = (14 + 6) / 5 + [(12 − 7) / 5]i = 4 + i
割り切れた! 商のノルムは17(普通の意味での素数)なので、これ以上の分解はできず、これにて分解完了:
  1 + 13i = (1 + i)(7 + 6i) = (1 + i)(2 + i)(4 + i)

他方の選択肢 f = 2 − i を試すと何が起きるのか。
  (7 + 6i) / (2 − i) = (14 − 6) / 5 + [(12 + 7) / 5]i = 8/5 + (19/5)i
こっちだと、割り切れない。つまり、こっちは正しい因数ではない。「ノルム5」というのは大きな手掛かりだが、因数をピンポイントで確定させるほどの「決定的な情報」でもない。最終的には、地道に「試し割り」するしかなさそうだ。

35. 話を少し戻して、33.問題(β の導出)をもう少しきっちり考えてみたい。β = x + yi とすると(x, y は普通の整数)、
  norm(β) = norm(x + yi) = x2 + y2
…が 2 に等しいというのが条件なので:
  x2 + y2 = 2  【ウ】

x2 と y2 は、どちらも 0 以上の整数なので、【ウ】が成り立つとすれば、一方が 2 で他方が 0 になるか、または、両方とも 1 になる必要がある。「一方が 2」というパターンは無理(x2 = 2 のようなものは、整数の範囲で解けない)。従って、正解は x2 = y2 = 1 つまり x = ±1, y = ±1(符号の選択は自由):
  β = 1 ± i または −1 ± i  【エ】
選択肢がいっぱいあって扱いにくそうだが、複素平面上において、これらは全部「座標軸の2本の対角線」の上にあり、原点からの距離が一定。言い換えると、ベクトル (1, 1) を90°刻みで回転させたものに他ならない(回転方向は反時計回り)。(1, 1) はもちろん 1 + i に対応する点。さて、あるベクトルの180°の回転(つまり、原点から伸びる正反対の矢印)が、もともとのベクトルの −1 倍に対応することは、明らかだろう。90°の回転とは「2回繰り返すと180°の回転(つまり −1 倍)に対応する操作」なので、i 倍に当たる(i 倍したものをもう一度 i 倍すれば、最初の −1 倍になる)。

【エ】の4個の選択肢は、β = 1 + i を基準にすると (i)β, (i2)β = (−1)β, (i3)β = (−i)β に当たり、どの二つも互いに単数倍なので、通常の因数分解の観点からは、区別する必要ない。特に、
  2 = (1 + i) × (1 − i) の第2因子 (1 − i) について
  (1 − i) = −i(1 + i)
が成り立つので:
  2 = (1 + i) × [−i(1 + i)] = −i(1 + i)2
普通の意味での素数が、ガウス整数の範囲でさらに分解されるのは、よくあること。けれど 2 という数は、ガウス整数の世界で、何とも興味深い形で分解される…。一種の「平方数」、正確に言えば「平方数の単数倍」。イメージ的には、1 + i は偏角45°、絶対値 √2 のベクトルなので、自乗すると、結果は偏角90°、絶対値 2:
  2i = (1 + i)2
90° の回転を打ち消して実数に戻すため、−i を掛け算すると:
  2 = (1 + i)2 × (−i)

最後に、ノルム5の因子 f についても同様に考えると、【ウ】に当たるものは
  x2 + y2 = 5
…上記 β と同様に考えると、x2, y2 の一方が 4、他方が 1 になる必要があり、【エ】に当たるものは:
  f = 2 ± i または −2 ± i または 1 ± 2i または −1 ± 2i
ガウス整数の世界には単数が4種類しかないので、これら8パターンが全部「互いに単数倍」というのは不可能。第1グループとして、f = 2 + i とその単数倍(自分自身=1倍を含む)計4種は、本質的に同じ因子。第2グループとして、f = 2 − i とその単数倍・計4種は、本質的に同じ因子だが、第1グループとは異なる(図解)。実際、34. で見たように、一方では割り切れても、他方では割り切れないことがある。

β の例は特別で、虚部の符号を変えた相棒(正式名称: 共役)が互いに単数倍(正式名称: 同伴)になっていた。一般には f の例のように、虚部の符号を変えた相棒は「同伴」ではなく、友達以上・恋人未満…。「ノルムが同じ・絶対値も同じ・実部も同じで虚部の符号だけが正反対」という特別な関係ではあるけれど、「おれに割れる数なら、おまえにも割れる。おまえに割れる数なら、おれにも割れる」というほどの、一心同体の関係ではない。

⁂

(付録) 追加の実例

ガウス整数の分解について、大ざっぱな感覚がつかめたら、この付録を飛ばして 36. に進んでください。「もうちょっと練習してみたい・遊んでみたい」方は、どうぞ…。

☆ α = 2 + 13i を分解。norm(α) = 4 + 169 = 173。このノルムは分解不可能。なぜなら、実際に試すと 2, 3, 5, 7, 11 のどれでも割り切れず、製造方法からして 13 でも割り切れない(13 で割ると 4余る)。17 で割り切れないこともすぐ分かるが、そもそも 17 が最小の素因数になるためには 172 = 289 以上であることが必要。結論として、このノルムは素数。だから α も分解不可能。

☆ α = 3 + 13i を分解。norm(α) = 9 + 169 = 178 = 2 × 89。ノルム 2 のガウス素数 β = 1 + i で割れる可能性が高い。実際に割ってみると α/β の実部は (3 × 1 + 13 × 1)/2 = 8、虚部は (13 × 1 − 3 × 1)/2 = 5。結論として α = (1 + i)(8 + 5i)。…8 + 5i は、ノルムが素数89なので、それ以上、分解不可能。

☆ α = 4 + 13i を分解。norm(α) = 16 + 169 = 185 = 5 × 37。ノルム 5 のガウス素数 f = 2 ± i で割れる可能性が高い。2 + i で割ってみると、商の実部は (4 × 2 + 13 × 1)/5 = 21/5。割り切れない。2 − i で割ってみると、商の実部は (4 × 2 − 13 × 1)/5 = −5/5 = −1、虚部は (13 × 2 − 4 × (−1))/5 = 30/5 = 6 なので、α = (2 − i)(−1 + 6i)。…この第2因子は、ノルムが素数37なので、これ以上、分解不可能。

不可欠な処理ではないが、そうしたければ、全部の因子を第1象限の数(偏角90°未満)の単数倍として表現できる。1回 i を掛けるごとに90°回転することを念頭に、第2・第3・第4象限にある因子については、それぞれ i3 = −i, i2 = −1, i1 = i を掛ければ、第1象限の数になる。この計算を正当化するためには、それぞれ単数 i1, i2, i3 をくくり出す必要がある。上記の例では:
  第4象限の 2 − ii 倍すると 2i + 1 なので (2 − i) = i3(1 + 2i)
  第2象限の −1 + 6i は −i 倍すると i + 6 なので (−1 + 6i) = i1(6 + i)
  だから α = (2 − i)(−1 + 6i) = i3(1 + 2i)i1(6 + i) = (1 + 2i)(6 + i) と書き換え可能。

☆ α = 5 + 13i を分解。norm(α) = 25 + 169 = 194 = 2 × 97。ノルム 2 のガウス素数 β = 1 + i で割れる可能性が高い。実際に割ってみると α/β の実部は (5 × 1 + 13 × 1)/2 = 9、虚部は (13 × 1 − 5 × 1)/2 = 4。結論として α = (1 + i)(9 + 4i)。…9 + 4i は、ノルムが素数97なので、それ以上、分解不可能。

ところで、次の3命題は同値:

  1. ガウス整数 α = x + yi は、偶数のノルムを持つ。
  2. α の実部と虚部は、偶奇が一致する。
  3. α は 1 + i で割り切れる。

例えば 565 + 13i のような数を見たら(565 と 13 は両方奇数、つまり偶奇が一致するので)、瞬時に 1 + i で割り切れると判定できる。

証明 偶数の2乗は偶数、奇数の2乗は奇数なので、整数の偶奇に関しては、その数自身を考えても、その数の2乗を考えても、同じこと。今、x2, y2 の両方が偶数であるか、または両方が奇数なら、norm(α) = x2 + y2 は(偶数同士の和、または奇数同士の和なので)偶数。それ以外の場合(つまり x2, y2 の一方が偶数で他方が奇数なら)、norm(α) = x2 + y2 は(偶数と奇数の和なので)偶数にならない。だから、最初の2命題は同値。さて、α が 1 + i で割り切れるということは、
  (x + yi) / (1 + i) = (x + y)/2 + [(y − x)/2]i
の分数が割り切れるということであり、つまり x + y と y − x がどちらも偶数ということ。場合分けして考えると、それは x と y の偶奇が一致することと同じ意味。だから、2番目の命題と3番目の命題も同値。□

✿ ✿ ✿


2021-11-27 少し不思議 パラレルワールド 1 + 2¿ (1足す2ハテナ)

36. 実例研究を見て、こう感じた人もいるかもしれない。「ガウス整数の分解って、結局、ノルムの分解じゃん。ノルムは普通の整数なんだから、普通に素因数分解できるに決まってる!」

まぁ、そうなんだけど、分解の仕方は確定的だろうか? ガウス整数 α が与えらたとき…

…みたいなことは絶対起きない!と言い切れるだろうか。

問題の奥行きを垣間見るため、パラレルワールドを考えてみよう。

ガウス整数の世界 それは x + yi という形の数の世界(x, y は普通の整数)。ここで i は、2乗すると −1 になる数。ちょっと慣れが必要だが、それほど難解な世界でもない。意外といろんなことに役立つ。

「パラレル・ガウス整数」の世界 それは x + y¿ という形の数の世界(x, y は普通の整数)。ここで ¿ は、2乗すると −3 になるミステリー要素。「はてな」と読むことにしよう。

パラレルワールドでも、α = 1 + 2¿, β = 3 + 4¿ なら α + β = 4 + 6¿ …のように普通に足し算・引き算ができる。掛け算だって、簡単にできる:
  αβ = (1 + 2¿)(3 + 4¿) = (3 + 4¿) + (6¿ + 8¿2)
  = 3 + 4¿ + 6¿ + 8(−3)   ←なぜなら ¿2 = −3
  = 3 + 10¿ − 24 = −21 + 10¿

ところが、このパラレルワールドでは…
  4 = 2 × 2 とも分解できるし 4 = (1 + ¿)(1 − ¿) とも分解できる!
  後半の計算の根拠 (1 + ¿)(1 − ¿) = 12 − ¿2 = 1 − (−3)

ガウス整数と「パラレル・ガウス整数」は、虚部の単位が違う以外は、ほとんど同じ世界のように思える。つまり、可能性の問題として、パラレルワールドで発生する現象は、ガウス整数の世界でも発生するかもしれない。…実は、いろいろなパラレルワールドを考えたとき、素因数分解がちゃんとできない(=分解の仕方が一つに定まらない)というのはありふれた現象で、むしろ素因数分解がちゃんとできる方が珍しい。もし仮にどの世界でも普通に素因数分解ができるなら、フェルマーの最終定理は何世紀も前に解決していただろう…。

 → 大長編ドラえもん のび太のパラレルワールド大冒険

第2のパラレルワールド x + yH という形の数の世界(x, y は普通の整数)。ここで H は、2乗すると −5 になるミステリー要素。
  6 = 2 × 3 とも分解できるし 6 = (1 + H)(1 − H) とも分解できる。
  検証 (1 + H)(1 − H) = 12 − H2 = 1 − (−5)

第3のパラレルワールド x + yJ という形の数の世界(x, y は普通の整数)。ここで J は、2乗すると −14 になるミステリー要素。
  81 = 3 × 3 × 3 × 3 とも分解できるし 81 = (5 + 2J)(5 − 2J) とも分解できる。
  検証 (5 + 2J)(5 − 2J) = 52 − (2J)2 = 25 − 4J2 = 25 − 4 × (−14) = 25 + 56
  分解の仕方が一定しないどころか、何個の因子の積なのか?ということすら、ぼやけている!

第3の例は、Keith Conrad: Factoring in Quadratic Fields より。第1の例の問題点は、世界をちょっと広げるだけで解決するが、話がそれるので今は深入りしない。

37. 「ガウス整数の世界では普通に素因数分解ができる」という主張の真偽は、意外と微妙だ…ということが分かる。その主張が事実であると証明できたとき、初めて、ピタゴラス・トリオをめぐるあの美しい議論が完結する…。

この先を探検するには、いろいろ細かい準備が要る。まず「素数」「素因数」のような「素」という用語は、「分解の仕方が一通りに定まるような因子」に限定して使うことにしたいのだが、そのことをどう数学的に定義すればいいか…。次のたとえ話で、考えてみたい。

☠ 悪の組織「AB=42」本部 犯人 c = 6 ~リアルワールド~

「やばい、サツのガサイレだ!」

「おまえら、指名手配の極悪犯人 6 をかくまってるだろう。調べさせてもらうぞ!」

部屋 A を調べると、そこには 3 がいて、言った。「ここには 6 なんて野郎はいませんぜ」

警察の部下「警部、3 の中に 6 が隠れるのは無理です。こいつの言ってることは、本当でしょう」「うむ」

そこで部屋 B を調べると、そこには 14 がいて、言った。「ここには 6 なんて野郎はいませんぜ」

警部「いや、14 の中には 6 が隠れる余地があるかもしれん。分析器で調べてみろ」

TSA のような、いやらしいスキャナーが持ち出された。「飛行機に乗り遅れるから早くしてよ」と 14 は抗議したが、「規則ですので…」と、試行除算による全数検索が行われた。分析結果 14 = 2 × 7。

警察の部下「警部、体内まで調べましたが、2 と 7 しかいません。こいつの言ってることも本当です」

「ガセネタだったか?」と首をひねりながら、捜査陣は帰ってしまった。なぜか関係ない紅茶のペットボトルを押収して…

犯人 6 は分身の術で 2 と 3 に分かれ、部屋A・部屋Bにまたがって潜伏していたのである。こういうことができる 6 は、もちろん素数ではないし、分解不可能でもない。

☠ 悪の組織「AB=42」本部 犯人 c = 3 ~リアルワールド~

「やばい、サツのガサイレだ!」

「おまえら、指名手配の極悪犯人 3 をかくまってるだろう。調べさせてもらうぞ!」

これは、まじやばい。隠れ方は 1 × 42, 2 × 21, 3 × 14, 6 × 7 とその逆順しかないが、どう隠れても、分析器にかけられたら、A または B から 3 が見つかる。

犯人 3 は分解不可能であり、素数なので、犯人 6 のような隠れ方ができなかった。

ここまでは当たり前。問題は次のパターン…

☠ 悪の組織「AB=42」本部 犯人 c = 3 ~パラレルワールド(少し不思議)~

「やばい、サツのガサイレだ!」

「おまえら、指名手配の極悪犯人 3 をかくまってるだろう。調べさせてもらうぞ!」

部屋Aを調べると、そこには 1 + H がいた。分析器にかけても 3 は見つからない。

部屋Bを調べると、そこには 7 − 7H がいた。分析器にかけても 3 は見つからない。

この世界でも 3 は分解不可能で、42 の約数なのだが、にもかかわらず、見つからないように隠れることができてしまう!

この H は、36. の「第2のパラレルワールド」の「2乗すると −5 になる数」。
  AB = (1 + H)(7 − 7H) = 7 − 7H + 7H − 7H2 = 7 − 7H2
  = 7 − 7 × (−5) = 7 − (−35) = 7 + 35 = 42

組織のボス「フ・フ・フ…。AB=42団は不死身なのだっ! 仲間をサツに売り渡したりは、しない。われわれの隠れみの装置は世界一ィィィ!」

これは、どういう意味かっ?!

AB の原材料表示が「2, 3, 7」となっていて、「伝統的な自然数100%で作った安心・安全な AB=42 です。複素数・無添加」と書いてあっても、このパラレルワールドでは、もはやその成分表示を信用できない。数学的に 2 × 3 と (1 + H)(1 − H) は等しく、見分けがつかないのだから…。そのようなあやふやな成分 3 について「本物の食材=素数」と認めると、何かあったとき、トレーサビリティーがないので(=成分の出どころを突き止められないので)、原因を解明できない。数学でいえば、このようなものを「素数」と認めると、約数や倍数といった基本的なところで、論理が狂ってしまう。同じ理由から、この平行世界においては、2 も 1 + H も 1 − H も、(事実それ以上分解できないのだが)「素数」と認めるわけにはいけない!

「素数」は「出どころがハッキリして、品質が保証されている第一級の素材」。数学的定義は回りくどい感じになるけど、パラレルワールドを探検するためには、この鋭い剣(つるぎ)が必要なのだ:

悪と闘う正義の定義 その世界において「どのような積 AB を考えても、もし AB が c で割り切れるなら、必ず A が c で割り切れるか、または B が c で割り切れる」という性質を持つ c を素数と呼ぶ。ただし 0 と単数は、素数と認めない。

この定義の直接の意味は、およそ「AB=42」の例えの通り。パラレルワールドの AB = 42 は c = 3 で割り切れるけど、「必ず A が c で割り切れるか、または B が c で割り切れる」という条件を満たしていない。だから、この平行世界では、3 は素数ではない。

この定義を繰り返し使うことにより、やがて「素因数分解ができるなら、それは一定の分解になり、同じものが2通り以上に分解されることはない」という保証が得られる…。その冒険を進める前に、奇妙な「時計ワールド」に立ち寄って、問題のさらなる奥行きを体験しておきたい。

✿ ✿ ✿


2021-12-10 とっても奇妙 時計ワールド 3 × 9 = 3

38. 前回「少し不思議 パラレルワールド」では 1 + 2¿ (1足す2ハテナ)のような変な数を考え、この種の数に潜む「悪」を垣間見た…「悪」というのは言葉のあやで、要するに「問題点」。

悪の組織「AB=42」団の例えからも分かるように、「素数の定義を厳重にしないと、悪と闘えない」。少々回りくどい定義だが、内容は別に難解でもなかった:

悪と闘う正義の定義 その世界において「どのような積 AB を考えても、もし AB が c で割り切れるなら、必ず A が c で割り切れるか、または B が c で割り切れる」という性質を持つ c を素数と呼ぶ。ただし 0 と単数は、素数と認めない。

「単数」の意味については後回しにして、ここで、奇妙な「時計ワールド」を観察してみたい。時計ワールドは24時間方式の「時」に対応し、例えば、23時の1時間後は0時:
  23 + 1 = 0
あるいは、0時を起点に、5時間後に1回目のメールチェックをして、そのまた5時間後に2回目のメールチェックをして…と反復する場合、3回目のメールチェックの時刻は
  5 × 3 = 15
だし、5回目のメールチェックの時刻は
  5 × 5 = 1
となる。普通の計算と全く同じだが、ただし、結果が0未満や24以上になったら、24を加減して、0以上23以下の範囲の整数になるように調整してる。似たことは、日常、多くの人が無意識にやってるだろう。

時計ワールドの奇妙さは、もっと根本的なところにある。悪と闘う正義の定義に照らすと、時計ワールドにおいて c = 3 は素数。なぜかというと、この世界の任意の積 AB について、それが c = 3 で割り切れる場合、A または B の少なくとも一方が 3 で割り切れる(A と B は、どちらも 0~23 の値なので、このことは直接確認可能)。よし、3 は厳密な定義に照らして、素数と認定された。めでたし、めでたし…

…ちょっと待ったぁぁぁ!

時計ワールドでは
  3 = 9 × 3  (★)
が成り立つ。つまり 3 は素数の認定を受けておきながら、9 と 3 の積に分解されてしまう。「3 は素数だけど、1 と自分自身以外の約数 9 を持つ」…え~、そんなの、あり~?

ていうか、(★)が成り立つということは、(★)に(★)自身を代入すると、
  3 = 3 × 3 × 3 = (3 × 3 × 3) × (3 × 3 × 3) × (3 × 3 × 3) = …
となって「因数分解が終わらない」。

「時計ワールド」は、見掛け以上に変てこ

「時計ワールド」の存在によって一般論を乱されないように、概念の隅々までよく考える必要がある。悪と闘う正義の定義には「単数は素数と認めない」というただし書きがある。「3 は単数なので、実は素数じゃないんだよ」という可能性は、あるだろうか?

39. 以下、内容的には当たり前のようなことばかりだけど、一体全体どこに問題の根源があるのか、いつもより念入りに、厳密に、概念を構成してみよう…

定義1 a, b をある世界 W に属する要素とする。a が b の約数であるということは、その世界に ac = b を満たす c が存在すること。

例1.1 普通の整数の世界で、a = −5 は b = 30 の約数。なぜなら −5c = 30 を満たす c が、同じ世界に存在する(c = −6)。

この状況を「a は b を割る」「a は b を割り切る」「b は a で割り切れる」「b は a の倍数」とも表現する。

例1.2 「時計ワールド」で、a = 9 は b = 3 の約数。なぜなら 9c = 3 を満たす c が、同じ世界に存在する(c = 3)。

定義2 ある世界 W において、1 の約数は、単数と呼ばれる。「a が単数だということ」は、「ac = 1 を満たす c が存在すること」と同じ意味。このような c は a の逆数 と呼ばれ、a−1 と表記される。時には 1/a とも表記される。

例2.1 普通の整数の世界で、a = −1 は b = 1 の約数だから、単数。b = 1 自身も 1 の約数だから、単数。

例2.2 ガウス整数の世界で、1, −1, i, −i の4個の数は単数。

例2.3 「時計ワールド」で、a = 5 は単数の一例。なぜなら 5c = 1 を満たす c が、同じ世界に存在する(c = 5)。一方、a = 3 は単数ではない。なぜなら 3c = 1 を満たす c が、同じ世界に存在しない(c は0~23の整数。一つずつ試すと、どれも 3c = 1 を満たさない)。

結局「3 は単数なので、実は素数じゃないんだよ」という主張は、成り立たない

どんな数でも、1 などの単数では割り切れる(もちろん「単数で割った商」でも、割り切れる)。けれど、それ以外の数で割り切れるかどうかは、ケースバイケース。

定義3 ある世界 W において、0 でも単数でもない要素 q があったとする。このとき…
  「q = AB が成り立つときには、必ず A または B が単数になるしかない」
…という状況が起こり得る。この状況を「q は分解不可能だ」と言い表すことにする。

例3.1 普通の整数の世界で、q = −5 は分解不可能。q = 1 × (−5) つまり A = 1, B = −5 とか、q = (−1) × 5 つまり A = −1, B = 5 といった見掛け上の「分解」は考えられる。もちろん、その逆順、例えば q = (−5) × 1 つまり A = −5, B = 1 も成り立つ。けれど、どのパターンでも、A または B が単数になってしまう。…イメージ的には、この世界において −5 は「真の約数」を持たない。

例3.2 ガウス整数の世界では、q = −5 は分解不可能ではない(つまり分解可能)。例えば A = 2 + i, B = −2 + i とすると、q = AB が成り立つ。そして A も B も単数ではない。

定義4(再掲) ある世界 W において、0 でも単数でもない要素 q が、次の性質を持つ場合を考えよう。
  性質「任意の積 AB について、もし q が AB の約数なら、必ず q は A の約数であるか、または q は B の約数」
そのような q は素数と呼ばれる。

ちょっと抽象的で分かりにくいが、悪と闘う正義の定義と同内容。

<参考> 「分解不可能」という用語は、正式には既約(きやく)と表現される。「既に約されている=真の約数を持たない=これ以上は分解できない」という意味。反対語、つまり「分解可能」を意味する専門用語は可約(かやく)。わざわざ小難しく言い換えてもあまり意味がないので、以下では「分解可能・分解不可能」で通すことにする。

普通の整数の世界では、実は「分解不可能」と「素数」は同じ意味であり、「何でわざわざ話をややこしくするんだ」という感じもする。一方、前回観察したように、いろいろなパラレルワールドを考えた場合、「分解不可能」と「素数」が同じ意味になるとは限らない。このゴチャゴチャした状況をある程度スッキリさせるのが目標。特に、具体例として「ガウス整数の世界ではどうなのか」ということについて、白黒ハッキリさせたい。

新たなる伏兵は「時計ワールド」の存在。上記のようにかなりきっちり定義してみても、「時計ワールド」の奇妙さは、少しも説明がつかない。…実は、全ての議論の背景となる「ある世界」という部分に、問題が潜んでいる。「世界」とは何か。そこに属する要素を考えるのだから「集合」だろう。足し算やら掛け算やらを考えるのだから「代数構造を持つ集合」だろう。「時計ワールド」の代数構造は、「普通の整数の世界」のそれと、それほど変わらない。足し算・引き算・掛け算はちゃんと定義されるし、計算結果は少し変だけど、結合法則・分配法則・交換法則も成り立ちそうだ。もちろん基本となる要素 0 と 1 も含まれている。難しい言葉で言えば「可換環」(かかんかん)。実は、整数の仲間である「整域」(せいいき)も「可換環」の一種なのだが(ガウス整数やそのパラレルワールドは「整域」の例)、ただの「可換環」ではなく、それに加えて一つの条件をクリアしている。

その条件は、一見つまらないようなことで、形式的には、定義1~4と似た雰囲気を持つ:
  整域の条件「その世界において、積 AB が 0 に等しいときは、必ず A または B が 0 に等しい」

当たり前の主張のようにも思える。AB = 0 なら A = 0 または B = 0 なんて、常識じゃん? でも時計ワールドでは
  8 × 3 = 0
のような現象が起きて、上記の常識が破られている。このほころびは「少し不思議」といった、ほろ酔い気分では済まされず、手に負えない悪影響をもたらす。それこそが「時計ワールド」の謎の正体だったのだ!

こら「時計ワールド」、おまえは、そもそも整域じゃないのだから、この議論に加わる資格はないのだっ。かわいそうだが、帰ってもらおう!

話を混乱させる「時計ワールド」を追い出して、話を整域に限定すると…。「整域においては、素数は分解不可能。その逆は、必ずしも成り立たない。つまり、分解不可能だからといって、素数とは限らない」…いかにも数学っぽい命題が出てきた。このくらいなら、頑張れば証明できそう。ゴールが見えてきた。

「整域」という限定(積が0なら、どっちかが0)が、なぜ必要なのか。その理由も、証明に必要な仮定として、やがて自然と明らかになるだろう。

⁂

(付録) A も B も 0 でないのに、それらを掛け合わせると AB = 0 になってしまう…というのは、ある意味、非常識だが、そのような A や B のことを零因子(れいいんし)という。

命題1 mod m において、A が零因子になってしまうということは、gcd(A, m) > 1 と同値: つまり、(ア) A が法 m と互いに素なら A は零因子でないが、(イ) A と m が2以上の公約数を持つなら A は零因子

ただし、ここで考えている零因子は「0 でないのに掛け算の結果が 0 になってしまう因子」なので、前提として A ≢ 0 と仮定しておく。

ところで m は法なので、0 ではない。

証明 (ア) AB ≡ 0 (mod m) を満たす任意の B を考える。もし仮に B ≢ 0 なら A と B は零因子。けれど AB ≡ 0 (mod m) とは、AB が m で割り切れるということ。従って(仮定より A と m は互いに素なのだから)、B が m で割り切れる: これは B ≡ 0 を意味し、つまり B ≢ 0 にはなり得ない

(イ) g = gcd(A, m) とする。g は m の(2以上の)約数だから、m/g は割り切れて整数になる: この整数を B = m/g と書こう。m は 0 ではないので、B ≠ 0。のみならず、B = m/g は、絶対値において m より小さいので(m を 2 以上の整数で割ったものだから…)、m の倍数になることはなく、B ≢ 0 (mod m)。さて g も A の約数だから、A/g = 整数。ところが
  積 AB = A × m/g = A/g × m = 整数 × m
は、m で割り切れる。つまり AB ≡ 0 (mod m)。従って、A ≢ 0 かつ B ≢ 0 なのに AB ≡ 0 となる。□

命題2 m が素数のとき mod m での計算には、零因子がない。

証明 A ≢ 0 (mod m) を満たす任意の数を考えよう。A は 0 と合同でないので、1, 2, 3, …, m−1 のどれかの数と合同だが、どの数と合同になるにしても、その数は m と互いに素(なぜなら m は素数)。結局、A と m は互いに素なので、命題1(ア)により、A は零因子じゃない。□

命題2の簡潔な直接証明 AB ≡ 0 (mod m) ということは、AB が m で割り切れるということ。ここで m は素数であり、素数の一般的定義(37.)によると「素数 m が AB を割り切るなら、m は A を割り切るか、または m は B を割り切る」。つまり A ≡ 0 (mod m) または B ≡ 0 (mod m) が成立。□

より一般的に、任意の体 F は整域である(つまり零因子を持たない)。それを示すには、任意の α, β ∈ F について αβ = 0 ⇒ α = 0 or β = 0 を言えばいい。もし α = 0 なら、この主張は既に成り立っている。そこで α ≠ 0 と仮定して β = 0 を導く。αβ = 0 の両辺に、左から α−1 を掛けると:
  α−1(αβ) = α−10
上の式において、左辺は結合法則により β に等しく、右辺は明らかに 0 に等しい。すなわち β = 0。□

✿ ✿ ✿


2021-12-04 整域の素数は分解不可能 小難しい? 当たり前?

40. 普通の整数の世界において、素数(例えば 7 や 11)は、真の約数を持たない。つまり分解不可能。表面的には
  7 = 7 × 1 とか 7 = (−1) × (−7)
のように積の形で書けるけど、それは本当の意味での分解とはいえない。これが例えば 8 や 9 なら
  8 = 2 × 4 とか 9 = 3 × 3
のように分解できるので、素数は「特別な性質を持つ数」であることが感じられる。

「素数は分解できない」という主張は、感覚的には当たり前かもしれないが、大事の前の小事、ちゃんと証明しておこう。

足し算・引き算・掛け算が普通にできる世界 W を考える。ここで「普通にできる」という意味は…。結合法則のような常識的なことに加えて、次の条件を付けておく:
  (整域の条件) W の 2要素 a, b について、もし ab = 0 ならば、必ず a = 0 または b = 0

この(一見どうでもいいような)条件によって、結果的に「時計ワールド」は考察対象外となる。この条件が必要な理由は、下記の通り…。

W の要素 p が素数だったとしよう。「素数」と「分解不可能」は別々の概念なので、p = AB のような分解ができるかもしれないし、できないかもしれない。仮に分解できて p = AB と書けたとしよう。このとき p と AB は等しいのだから、あえて当たり前のことを言えば、AB は p の倍数(ちょうど1倍)であり、AB は p で割り切れる(商1)。つまり p は AB の約数。従って、素数の定義から、p は A の約数であるか、または B の約数。もし A の約数なら、それでいいとしよう。もし B の約数なら、A と B という変数名を入れ替えることにしよう(※注)。この約束の下で、p は必ず A の約数。

(※注) この場合、もともと B と呼ばれていた数(p の倍数である)を A と改名し、もともと A と呼ばれていた数を B と改名する。表面的に名前を交換するだけで、考えている二つの数 {A, B} に変わりはない。

「約数」という言葉の定義から、世界 W には A = kp を満たす k が存在する。このとき:
  p = AB = (kp)B
両辺に −kpB を足すと:
  p − kpB = 0
  交換法則・結合法則から p − p(kB) = 0
  分配法則から p(1 − kB) = 0

ここで整域の条件が利いてくる! p と (1 − kB) の積が 0 なのだから、そして舞台となる世界 W は整域なのだから、p = 0 または (1 − kB) = 0 でなければならない。p は素数なので、定義上 0 ではない。必然的に:
  1 − kB = 0
両辺に kB を足して:
  1 = kB
従って(単数の定義によって)k と B は、どちらも単数。

…以上をまとめると、勝手に選んだ素数 p について、p = AB と分解できたとすると、必ず A と B の少なくとも一方は、単数になるしかない。これは「分解不可能」の定義そのものなので、素数は分解不可能。ただし「その世界が整域ならば」という条件が付く。「整域」という条件がないと、上記の証明は成り立たない。

⁂

流し読みすると「何が楽しくて、当たり前のことを小難しく言ってるんだ」と感じるかもしれない。「素数は真の約数を持たない」なんて当たり前じゃないか、と。けれど、その「当たり前のこと」がなぜ当たり前なのかを調べていくと、環論(かんろん)的な議論になるのはそれとして、素数の定義の仕方や、整域の条件(零因子が存在しないという仮定)が繊細に絡み合っている。数論の精妙さを垣間見ることができる。

面白いのは、逆が成り立たない点: 素数は分解不可能だけど、分解不可能だからといって素数とは限らない。「少し不思議 パラレルワールド」では、いくつか具体例を挙げたが、深くは検証しなかった。この方向にもう少し進んでみたい。

✿ ✿ ✿


2022-03-20 ユークリッド整域では「素数」と「分解不可能」は同じ意味

41. 一般の整域において、もし z が素数なら z は分解不可能(40.)。その逆は、一般の整域では成り立たないが、ユークリッド整域では成り立つ:
  ユークリッド整域 W においては、もし z が分解不可能なら、z は素数である。すなわち:
  任意の a, b ∈ W について、分解不可能な z が ab の約数なら、z は a の約数であるか、または z は b の約数。

…「すなわち」の後の、少々回りくどい表現の背景については 39. 定義4を参照。

証明 分解不可能な z が ab の約数だと仮定する。「z は a の約数であるか、または z は b の約数」を証明したい。それは「z が a の約数でないなら、z は b の約数」というのと同じ意味。そこでわれわれは、z は a の約数でないと仮定して、そのとき z は b の約数になることを示す。

「z が a の約数かどうか」は、単数倍の違いに影響されないことに注意する。例えば、通常の整数で 3 は 6 の約数だが、−3 も 6 の約数。4 は 6 の約数ではないが、−4 も 6 の約数ではない。

z は ab の約数なので、ab は z の倍数であり、何らかの k ∈ W があって
  ab = zk  ‥‥‥ ①
と書ける。

さて、考えている世界 W はユークリッド整域なので、必ず最大公約数を求めることができる(よく考えると、最大公約数さえ存在してくれれば、W はユークリッド整域でなくてもいいのかもしれないが、少なくともユークリッド整域においてなら、互除法によって、具体的に最大公約数を決定できることが保証されている)。そこで g = gcd(a, z) としよう。

g は z の約数だが、z は分解不可能なので、真の約数を持たない。つまり g は z の「自明な約数」(普通の整数で z = 7 なら g = ±1, ±7 のようなもの):
  可能性1 g は、単数(つまり 1 の約数)であるか、さもなければ、
  可能性2 g は、z 自身の単数倍。

g は a と z の公約数なので、g は a の約数でもある。可能性2があり得たとすると、「g = z 自身(の単数倍)」が a の約数ということになるが、z は a の約数でないと仮定しているのだから、それはあり得ない。従って、可能性1が唯一の道: g は単数でなければならない。よって W には、g の逆数 g−1 が存在する(例えば、W がガウス整数の世界だとして、g が i だとすれば、その逆数 i−1 = 1/i = −i もガウス整数)。

g は a と z の最大公約数なので、バシェ/ベズの定理から、W という世界には、とある2要素 X, Y が存在して、次の等式を成立させる:
  aX + zY = g  ‥‥‥ ②

〔注意〕 ここでこの定理を持ち出すのは、唐突に感じられるかもしれない。けれど「z は b の約数」ということを示したいわけで、
  z の倍数 = b
という式を作れれば、その目的は達成される。②は「何ちゃらプラス zY = かんちゃら」の形を持ち、左辺に z の倍数 zY が含まれている。以下のように、ちょっと加工すると「z × 何ちゃらかんちゃら = b」の形になる。

②の両辺を g−1 倍すると:
  aXg−1 + zYg−1 = gg−1 = 1

その両辺をさらに b 倍すると:
  aXg−1b + zYg−1b = b

交換法則、①、分配法則を順に使うと:
  ab(Xg−1) + z(bYg−1) = b
  zk(Xg−1) + z(bYg−1) = b
  z(kXg−1 + bYg−1) = b

最後の式の左辺は z で割り切れるので、それと等しい右辺の b も z で割り切れる。言い換えれば、z は b の約数。これが示したいことだった。□

✿ ✿ ✿


2022-03-11 バシェ/ベズの命題の逆 ax + by = 1 と書ければ a, b は互いに素

ちょっと寄り道。

42. 0 でない整数 a, b を考える。もし a, b が互いに素なら、
  ax + by = 1
は、整数解 x, y を持つ(バシェ/ベズの定理から)。

この命題の「整数」という部分は、任意のユークリッド整域(例えば「ガウス整数」)に置き換えることもできる(ユークリッドの互除法が使える世界なら、何でもいい)。

逆も成り立つ:

とあるユークリッド整域 W において、0 でない2要素 a, b を考える。W の中に
  ax + by = 1
を満たす x, y が存在するなら、a, b は互いに素。

証明 a と b の公約数をどれでも好きに選んで、それを c とする(a と b が何であろうと、最悪でも 1 という公約数があるので、必ず c を選ぶことができる)。すると a は c の倍数なので、そのまた x 倍の ax も、c の倍数。同様に b は c の倍数なので、by も c の倍数。だから
  ax + by
は、c の倍数と c の倍数の和であり、c の倍数。ところが、
  ax + by = 1
なのだから、1 は c の倍数。言い換えれば c は 1 の約数。a と b の公約数 c をどう選んでも、その c は 1 の約数(すなわち単数)。つまり a と b の公約数は、単数に限られる。言い換えれば、a と b は互いに素。□

遊び 3X + 4Y = 5 は整数解を持つか?

3 と 4 は互いに素なので、
  3x + 4y = 1
を満たす x, y が存在する。例えば x = −1, y = 1:
  3(−1) + 4(1) = 1
その両辺を N 倍すれば:
  3(−N) + 4(N) = N
つまり、任意の整数 N は 3X + 4Y の形で書ける!

N = 5 とすると: 3(−5) + 4(5) = 5。遊びの答えは「イエス」で、具体的な一つの解は X = −5, Y = 5。

もっと遊び これは一意解だろうか? 不定方程式なので解が無限個あってもおかしくないけど、もしかすると、解は一つかもしれない(一意解)。どっちでしょう???

こーいうときには、迷わず…。ブルートフォースだぁ!

\\ PARI
for(x=-10,10, for(y=-10,10, if(3*x+4*y==5,print([x,y]))))

結果:

[-9, 8]
[-5, 5]
[-1, 2]
[3, -1]
[7, -4]

X = −5, Y = 5 は一意解でないどころか、絶対値最小の解でもないことが分かる。3X + 4Y = 5 の一番簡単な解は X = −1, Y = 2、次に簡単な解は X = 3, Y = −1。言われてみれば確かに…。検索結果を見ると X の列は4 ずつ増え、Y の列は −3 ずつ増えるので(これらは遊びの係数と関係ありそうだ!)、一般解は…
  X = −1 + 4k, Y = 2 − 3k (kは任意の整数)
…だと予想される。しかし、それは数値的な観察。3X + 4Y = 5 が与えられたとき、どうやって直接この一般解が得られるのだろう?

一般に s と t が互いに素のとき、sX + tY = 1 の一つの解は、ユークリッドの互除法を逆にたどることで、機械的に得られる(必要に応じて両辺を単数倍する)。その両辺を N 倍すれば、sX + tY = N の一つの解も、機械的に得られる。そうすると、第一の問題は、一つの解から別の解を生成する方法。具体的には「ある一つの解 X, Y が見つかったとき X + t, Y − s も解である」。実際:
  sX + tY = N ならば
  s(X + t) + t(Y − s) = N。
  なぜなら、2番目の式の左辺は、1番目の式の左辺に等しい。

この性質を繰り返して使うと、(X + t), (Y − s) が解なら (X + t) + t, (Y − s) − s も解。つまり X + 2t, Y − 2s も解であり、一般に X + kt, Y − ks も解であることが分かる。従って、上記の
  X = −1 + 4k, Y = 2 − 3k (kは任意の整数)
のようなものについては、「解の公式」というほどストレートではないけど、「この系列の解たち」を記述するアルゴリズムが、存在する。「それとは違う系列の解が、他にもあるのでは?」というのは別問題だけど…。

付記 この一般解の式について「無限個の解がある」とまでは主張しない。普通の整数の場合、確かにこれで無限個だが、W の要素は有限個かもしれず、その場合、(X, Y) というペア自体が有限種類しかないので、無限個の解があるわけない。

✿ ✿ ✿


2022-03-16 互いに素な整数はガウス整数としても互いに素 Bachet–Bézout

43. バシェ/ベズの命題 あるユークリッド整域 W の2元 a, b について、「ax + by = 1 を満たす x, y ∈ W が存在すること」と、「a, b が互いに素であること」は、同値。

ガウス整数の世界がユークリッド整域であることは、既に確かめた

さて、普通の整数の世界で a, b が互いに素なら、何らかの整数 x, y があって ax + by = 1 と書ける。この状況において…

普通の整数 a, b, x, y をそれぞれ「ガウス整数の特別な場合」と見ると、ガウス整数の範囲で(実際には「ガウス整数の特別な場合に当たる普通の整数」の範囲で)
  ax + by = 1
と書けるのだから、a, b はガウス整数の範囲でも、互いに素。

上記の主張は、「ガウス整数から見た 3² + 4² = 5²」の 20. において、前借りのように「ひとまず」証明なしで受け入れたが、これで借りは返した!

残る問題は「ユークリッド整域は、一意分解整域」ということの証明…。普通はPIDを媒介にするのだろう。でも、ピタゴラス・トリオのような初等的な話題でイデアルってのも、ブルバキくさいというか、天下り的というか、大げさ過ぎる…。PIDを挟まず、直接「ユークリッド整域は、一意分解整域」をスッキリ示す良い方法はないか。ガウス整数に限定すれば、ノルムについての帰納法という手もありそうだけど、一般のユークリッド整域だと、ノルムの具体的定義も分からないので、どこから手を付けていいのやら…

バシェ/ベズの定理は、イデアルの部分を古典数論で包み込んで隠しているようなものなので、うまく使えば面白いことができるかもしれない。

⁂

追記(2022-03-19) イデアルを使わずに「ユークリッド整域は、一意分解整域」を証明する方法について、良い資料が見つかった。
Keith Conrad: REMARKS ABOUT EUCLIDEAN DOMAINS
https://kconrad.math.uconn.edu/blurbs/ringtheory/euclideanrk.pdf

「入力が 0 以外のとき、出力が正の整数」というだけの、漠然とした「弱いノルム」(Euclidean function)の定義から、どうやって分解の存在が出てくるのか。その定義だけだと「分解すればするほどノルムがどんどん小さくなるので、いつかは止まる」という論法が使えない。リンク先のトリックを使うと「弱いノルムが存在すれば、必ず、都合のいい不等式の付いたノルムも存在する」。

✿ ✿ ✿


2022-03-17 ガウス整数は普通に素因数分解できる

44. 本当は「一般のユークリッド整域での一意分解」をやりたいのだが、まずは具体的に、ガウス整数の世界で考えてみる。

ガウス整数の世界では(一般にユークリッド整域では)、「素数」と「分解不可能な要素」(既約)は同じ意味。なぜなら
  「整域において、素数は分解不可能」だし、
  「ユークリッド整域では、逆に、分解不可能なら素数」。

要するに、ユークリッド整域では「これ以上分解できない要素にまで徹底的に分解し尽くすこと」=「素因数分解」。

そして、ガウス整数の世界はユークリッド整域である。

復習 整域とは「足し算・引き算・掛け算」が普通にできる世界。ユークリッド整域とは、さらに「割り算」がある程度できる世界――詳しく言うと、ユークリッドの互除法が使える整域のことで、「X割るYはQ余りR」のような「余り付きの割り算」が普通にできる世界…。「普通にできる」の意味は、次の通り。一般の整域に関しては、もし XY が = 0 なら、X と Y の少なくとも一方が 0。つまり、どちらも 0 でない X, Y の積が 0 になることはない(常識的には当たり前)。その特別な場合であるユークリッド整域に関しては、余りRが割る数Yより「小さく」なる(これまた常識的には当たり前だが、抽象代数学的にはすごく強い制約)。「小さくなる」の意味は、必ずしも直接的な整数の大小関係ではないけど、何らかの基準で「小さく」なる(ガウス整数の場合では、余りの「ノルムが」小さくなる…なじみ深い言葉で言えば「絶対値が」小さくなる)。

分解の存在 (0でも単数でもない)ガウス整数 a が真の約数を持ち a = bc と分解されたとする。同様に b = de, c = fg, d = ○△, … などと、分解された因子が(枝分かれのように)どんどん分解されるかもしれないが、この分解はどこかで止まらなければならない。

PNG画像
分解すればするほど部品が細かくなって、いつかは分解不可能の構成要素に

なぜなら真の分解において、A = BC なら norm(B) と norm(C) はどちらも norm(A) より小さく、しかもノルムは 1 より大きい整数。真の分解のたびに因数のノルムが小さくなり、しかも 1 以下にはなれないので、分解可能の状態は永遠には続かず、必ず「末端」では分解不可能になる。一方、最初から a が素数なら、a という「1個の素数の積」(つまりはそれ自体)が、a の素因数分解。

分解の一意性 ガウス整数 a が a = p1p2p3…pm と素因数分解されたとする。a = q1q2q3…qn とも素因数分解されたとする。このとき「m = n で、p たちと q たちは、順序と単数倍の違いを無視すると同じ」ということを言いたい。この「(順序と単数倍は度外視して)必ず同じ1種類の分解になる」という性質を分解の一意性(いちいせい)と呼び、一意性を持つ分解を一意(的)と形容する(英語では「ユニークな分解」という平凡な日常表現なのだが、最初に訳した人が、格好をつけて小難しい表現を使ってしまったらしい…分かりにくければ「分解のユニークさ」「a の分解法はオンリーワン」と読み替えてもいいかも)。

「君たち一人一人は、ユニークな存在なんだ。コピーなんかじゃない」
ミュウツー「………」

素数 p1 は a の約数なので:
  p1 は a = q1(q2q3…qn) を割る。
  A = q1, B = q2q3…qn と置くと、素数の本当の定義から
    p1 は AB を割るので、p1 は A を割るか、または B を割る。
    つまり p1 は q1 を割るか、または q2q3…qn を割る。

p1 が q1 を割るのなら、単数倍の違いを無視して、p1 と q1 は同じ素数。さもなければ、p1 は q2q3…qn を割るので、同様の議論から
  p1 は q2 を割るか、または q3q4…qn を割る。

この論法を反復適用すると、p1 は q のどれかを割らなければならない。変数の名前(右下の小さい数字)を適宜変更して、「p1 で割り切れる q」を q1 と改名すると(旧 q1 には、新 q1 の旧名 q を与える)、q1 = up1。ここで u は単数 ±1 または ±i。整域なので、
  p1p2p3…pm = a = (up1)q2q3…qn
の両辺を p1 で割ること(「約分」)ができて、こうなる:
  p2p3…pm = uq2q3…qn

つまり a の素因数分解が一意的か?という問題は、因数の数が1個少ないガウス整数 a/p1 の素因数分解の一意性の問題に帰着される。因数の数が小さい場合、例えば m = n = 1 の場合には、素因数分解の一意性を直接証明できるので、帰納法により、任意のガウス整数は一意分解される。□

だいたいこんな感じで「ガウス整数の範囲でも普通に素因数分解ができる」ということが示され、ガウス整数を使ったピタゴラス・トリオの研究は完結する。

✿ ✿ ✿


2022-03-30 ユークリッド整域は一意分解整域 イデアルを使わない証明法

45. ガウス整数の世界は、ちょっぴりエキゾチックだけど、普通の整数の世界とよく似ている。普通の整数の問題でも、あえてガウス整数の範囲で考えることにより、見通しが良くなることがある。例えば、「フェルマーのクリスマス定理」(2個の平方数の和として書ける素数とそうでない素数)。「フェルマーの最終定理」の n=4 の場合。「ピタゴラス・トリオ」の研究は、ガウス整数の問題として考えるとき、息をのむほど美しい!

もっとも「普通の整数の世界と似ている」という印象だけで「普通の整数の世界と全く同じ構造を持つ」と考えてしまうのは、論理的にまずい…。

次の二つの事柄については、特に注意を要する。

分解の存在 通常のガウス整数 z は、どれも有限個の「分解不可能なガウス整数」の積として、表される。ここで「通常の」というのは、「特殊要素(0 と単数)を除く」という意味。

分解の一意性 この「表し方」は、一つ一つの z について、本質的に1種類しかない。

ガウス整数に限らず、一般にユークリッド整域では「分解不可能」=「素数」なので、素数の定義から、一意性は自然に導かれる。問題は「そもそも分解が完了する保証があるのか?」という点だが…。もし z が素数なら、既に分解は完了していて、何もする必要はない。もし z が素数でないなら、(素数でないということは真の約数を持つということなので)例えば z = ab のように分解される。

このとき、a, b が両方素数ならそれで分解完了なのだが、一般には a = cd, b = ef, c = ○△, … のように、分解されて出てきた因数がさらに分解され、その結果がさらに分解され…といったことが起きる。「だけどその連鎖は無限には続かず、いつかは分解が完了するんだよ」という部分が、問題の核心。ガウス整数に関する限り、「分解すればするほどノルムがだんだん小さくなる」こと、「分解結果のノルムは 1 以下にはなれない」ことから、「どこかで分解が停止しなければならない」ことは、直観的に明らかだろう。

ガウス整数の分解は、通常の整数の範囲でのノルムの分解を含意するため、最良のケースでも、いつかはノルム自体が素数になって、それ以上分解できなくなる。最良ではないケースでは、「z のノルムは合成数だが、z は分解不可能」という事態もあるかもしれない。

46. ガウス整数の世界だけを考えるなら、それで話は終わるのだが、そもそもなぜ上記のようなややこしい議論が必要になるのか…。それを理解するためには、少し視野を広げて、ガウス整数以外の世界も考える必要がある。ガウス整数の世界と似ている「パラレルワールド」をいくつか覗いてみるとき、「ガウス整数の世界っていうのは、特別なのだ」ということが実感される。広い数論の宇宙では、普通に素因数分解ができない世界の方が普通で、分解が一意的というのは珍しい!

すると「普通に素因数分解ができる世界(一意分解整域、通称UFD)というのは、そうでない世界と比べて、本質的に何が違うのか?」という疑問が生じる。その最初の手掛かりとして「少なくとも、余り付きの割り算(ユークリッド除法)ができる世界(ユークリッド整域、通称ED)においては、一意分解が成り立つ」ということを示したい。

標準の方法としては、PID(主イデアル整域)というレイヤーを経由して、「EDはPIDであり、PIDはUFDなので、EDはUFD」という三段論法(?)が使われる。…それはそれで研究する価値があるとしても、PIDなんていう概念を天下り的に持ち出さず、直接「EDはUFD」を示せないものだろうか?

その直接ルートは、ある意味、現代の標準的な方法より分かりやすい。教科書を無視して「外側から」この問題を眺めるとき、一般の文献の記述は、むしろ数学的に不自然であることが分かる。

まず、ユークリッド整域の定義だが…

とある関数 d を考える。ただしこの関数は、次の条件を満たさなければならない。
  (☆) d の入力(定義域)は、とある整域 R の 0 以外の任意の要素 x であり、d の出力(値域)は、0 以上の普通の整数。

要するに、y = d(x) とすると、x は R の 0 以外の要素。y は 0 以上の(普通の)整数。

教科書的には、さらに、関数 d が次の性質を持つとする(詳細は後述)。
  (★) 任意の a, b ∈ R について d(a) ≤ d(ab)
  ただし、この不等式に関する限り、a も b も 0 ではないとする。

Ăgargün と Fletcher(1995年)によると、(★)の不等式は、もともと20世紀半ば(1931年?)にバン・デル・ワールデン(van der Waerden)が記述したらしい。バン・デル・ワールデンの不等式と呼ぶことができる。
https://journals.tubitak.gov.tr/math/issues/mat-95-19-3/pp-291-299.pdf
2010年ごろ、キース・コンラッドは、これを単に d-不等式と呼んでいる。
https://kconrad.math.uconn.edu/blurbs/ringtheory/euclideanrk.pdf (最終更新2021年6月)

どちらの著者も指摘していることだが、この不等式はあってもなくても論理的には同じ意味であり、つまり本当は必要ない。必要ないのに、なぜ教科書の定義に含まれているのか。不等式(★)を天下り的に使えるなら、上記「分解の存在の証明」が簡単になるから…というご都合主義らしい。要するに、「この不等式を導入する手間を省き、証明を手っ取り早く終わらせよう」という手抜き工事。本来定理であることを定義に含めてしまうと、論理が不透明になり、結局、分かりにくくなる恐れがある。

さて、「R がユークリッド整域である」ということは、およそ次のように定義される。
  その世界 R の任意の2要素 a, b について、a を b で割り算したいとしよう。
  (割り算なので、a は 0 でもいいが b は 0 でないとする。)
  このとき、次の関係を満たす形で、商 q と余り r を選択することができる:
    a = bq + r ただし r = 0 または d(r) < d(b)
  (q と r は、もちろん考えている世界 R の要素。)

この定義の意味は、次の通り。もし r = 0 なら、a は b で割り切れる。つまり a は b の倍数、b は a の約数。これは分かりやすいケースであり、理解に支障ないだろう…。一方、もし r ≠ 0 なら、a は b で割り切れないが、上記の定義によると、余り r は b より「小さく」なければならない。b で割り算すると、余り r が b より小さくなるという性質こそ、ユークリッドの互除法が使える根拠であり、ユークリッド整域の核心である。余りが「小さく」なる保証がないとすると、(普通の意味での)互除法が有限ステップで終了する保証がなくなってしまう(=互除法が成立しない)。

「小さい」の意味は、r と b を何らかの尺度で比較して決定される。前述の関数 d によって、r と b をそれぞれ 0 以上の整数に対応させているので、結局、普通の整数の大小の比較に帰着される。具体例として、ガウス整数の世界においては、d(r) として r のノルムを使うことができるのだった。このような性質を持つ関数 d が存在することが、R がユークリッド整域である条件であり、もし「どうやってもこういう関数を作れない」とすれば、その世界はユークリッド整域ではない…。

関数 d の存在が定義のかなめなので、この d については、もう少し精密に考えたい。(★)を定義に含める必要がないことについては、ウィキペディアでも指摘されている――それを要約すると「多くの代数学の教科書では、d(a) ≤ d(ab) も仮定されているが、この条件は冗長。(☆)を満たす関数 d が存在するなら、必ず(☆)と(★)を両方満たす d も構成できる」。具体的な構成法も記述されているが、「それでどうしてうまくいくか」といった説明はない。

次回以降、この部分を掘り下げて検討してみたい。(つづく)

✿ ✿ ✿


2022-04-01 ユークリッド整域(その2) 教科書が教えてくれない裏事情

d(0) はどうした? この素朴な疑問に答えてくれない天下り的定義は、理解の妨げになる。「理解」は重箱の隅に宿る。

ユークリッド整域は一意分解整域」の続き。

47. ユークリッド整域とは「ユークリッドの割り算」ができるような整域。ここでユークリッドの割り算というのは、a を b で割るとして、
  割り切れて商が q になるなら、それはそれで良い(a = bq)
  割り切れなくて余り r が発生しても構わない(a = bq + r)
    …ただし、余り r のサイズが、割る数 b のサイズより小さくなることが条件。

例えば、x2 − 9 = (x + 3)(x − 3) なので、
  a = x2 − 9 を b = x + 3 で割れば、割り切れる(商は q = x − 3)。
同様に、x2 − 2 = (x + 3)(x − 3) + 7 なので、
  a = x2 − 2 を b = x + 3 で割れば、商は q = x − 3、余りは r = 7 とも言えるが…
    余り r = 7 は、割る数 b = x + 3 より「小さい」のだろうか?

素朴に考えると「それは x の値次第」。例えばもし x = 2 なら、b = 5 より r = 7 の方が大きい。従って、このように解釈する場合、これは「ユークリッドの割り算」ではない。一方、これを「多項式の世界の割り算」だと解釈すると、「2次式」を「1次式」で割り算して、余りが定数(つまり「0次式」)になったのだから、次数が小さくなっている。次数をサイズの尺度にするなら、「ユークリッドの割り算」が成立している。

このように、「ユークリッドの割り算」が成立するかどうかは、計算それ自体の性質ではなく、その計算をどういう世界で考えているのかという「世界観」と、「余りのサイズ」をどういう基準で比較するのかという「尺度」、この二つの事柄によって決まる。

前回ゴチャゴチャ天下り的に出てきた関数 d は、コンセプトとしては、考えている世界 R の任意の要素 a について、a の「サイズ」を求めるもの。余りのサイズ d(r) が b のサイズ d(b) より小さいかどうかを問題にする。「サイズ」として、普通は0以上の整数を使う。これは、普通の整数の「サイズ」を絶対値で考えたり、ガウス整数の「サイズ」をノルムで考えたりすることの、一般化に当たる。

48. 関数 d は、入力として R の任意の元を受け付けるわけではなく、0 が定義域から除外されているのだった。0 のサイズ d(0) が定義されなくていいのだろうか?

d(0) = 0 とした方が感覚的にもしっくりするし、話が簡単なのではないか?

というより、整数のサイズの尺度が絶対値、ガウス整数のサイズの尺度がノルムとするなら、d(0) = 0 でなければならないはずだろう。

d(0) が自然に定義可能だとしても、あえて定義域を制限して 0 を定義域から除外することは、できる…。けれど 0 を定義域から除外することに、合理的な理由があるのだろうか?

最初に例を挙げた「多項式の世界」の場合、「尺度は次数」という選択が簡単なようだが、そうすると f(x) = 0 という定数関数の次数の定義において、ちょっと困ったことになる。「0なんだから、0次式?」と言いたいところだが…。例えば、2次式と3次式の積は5次式。一般に n 次式と m 次式の積は (n+m) 次式。では、「0次式?」である f(x) = 0 と、3次式 g(x) = x3 の積は「3次式?」のはずだが、0 と x3 の積は 0 なので「0次式?」になってしまい、つじつまが合わない。…そこで、標準的なアプローチとしては「多項式の世界において、0 の次数は定義されない」と約束する。その副作用として: 多項式の世界において、多項式 f のサイズの尺度 d(f) を f の次数とするためには、d についての制約を緩めて「d(0) の定義は必要ない」としておく。

例えば f が x についての3次式 f(x) = 5x3 − 2x + 6 だとすると、上記の定義において d(f) = 3。そうしたければ d(f) の代わりに d(f(x)) と書いても d(5x3 − 2x + 6) と書いても、意味は同じ。

もっとも、「多項式の世界において、次数をサイズの尺度とする」というのは、一つの選択肢にすぎない。もっとエレガントな発想としては、「多項式としての 0 のサイズ d(0) は、次数と無関係に 0 である」と定義して、さらに「0 以外の多項式 f のサイズ d(f) は、f の次数を n として 2n である」と定義することもできる。この場合、0以外の定数式、つまり0次式のサイズは 20 = 1 となり、1次式のサイズは 21 = 2 となり、2次式のサイズは 22 = 4 となり、3次式のサイズは 23 = 8 等々となる。このように d を定義するなら、定義域から 0 を除外する必要がなくなって、全て丸く収まる(本質的に、多項式としての 0 については n = −∞ と考えていることに相当し、これは多項式に関する深い議論とも整合性がある)。

多項式の世界では、そういう巧妙な抜け道があるとしても、一般のユークリッド整域 R で、いつも d(0) をきれいに定義できるだろうか。やればできるかもしれないが、面倒なことが起きないとも限らない…。

他方において、割り切れる場合、すなわち r = 0 の場合を特別扱いするなら*1、余りについて d(r) = d(0) を考える必要はない。さらに、b = 0 での割り算を禁止しておけば(これは常識的な選択だろう*2)、そのときの余りが d(b) = d(0) より小さくなるかどうか考える必要もないので、やはり d(0) を考える必要はない。要するに、d(0) については一切考えずに、理論を構築できる。

d(0) を考えずに済ませ、トラブルの原因になりかねない 0 を定義域から除外しておくのは、一つの有効な(安全確実な)選択肢といえる。わざわざ危ない橋を渡らず、一歩引いた安全圏からじっくり議論しましょう、と。

d(0) の定義を要求しない理由、r = 0 をわざわざ別扱いする理由、そして b ≠ 0 という制限を付ける理由は、以上の通り。「この定義でなければ駄目」というわけではない。多項式の世界における問題を(例えば上記の方法で)解決するなら、普通に d(0) = 0 とすることも可能だろう。

*1 割り切れるか割り切れないかは、数論において重大な区別なので、割り切れる場合を特別扱いすることは、不自然ではない。

*2 「ユークリッドの割り算」では、普通の割り算と違って、0での割り算を考える余地もある。例えば「5÷0 は 0余り5」とするなら、a = 5, b = 0, q = 0, r = 5 が a = bq + r を満たす。けれど、これを認めるには「0で割るときには、余りが小さくならなくてもいい」等のルール改訂が必要となり、あまりメリットもないだろう。

多項式の世界において、次数を「サイズ」としたい場合、0 ではない定数 f(x) = c は0次式であり、d(f) = 0 という値が必要: d値域からは 0 を除外できない。値域が「1以上の自然数」ではなく「0以上の整数」となっているのは、そのため。

けれど、値域が広ければ広いほどいいわけではない! 調子に乗って、整数全体とか、実数にしては駄目。必ず最小要素があるようにしておかないと、「だんだんサイズが小さくなるけど最小要素の制限があるので、どこかで止まるしかない」という論法が使えず、「互除法が有限ステップで終了すること」「因数分解が完了すること」を導けなくなる。負の整数には、もちろん最小がないので、整数全体ではまずい。実数もまずい――区間を [0, 1] などと限定するとしても、「だんだん小さくなるけど無限に止まらない列」を作れてしまう:
  0.1, 0.01, 0.001, 0.0001, … のように。

ガウス整数の「サイズ」を(複素数の絶対値ではなく)ノルムで定義するのも、「平方根の記号は邪魔くさい」とか「実数より整数の方が計算が楽」といった気分の問題ではない!

ガウス整数の世界の中に入って、そこを探検するときには、ノルムの素因数分解を考えることが役立つ。一方、ユークリッド整域(=ユークリッドの割り算を持つ世界たちの一例)というもっと大きなくくりの中で、ガウス整数の世界を「外から」眺め、尺度 d として何かを使う場合には、分解以前の問題として、d の値域が整列集合(=どういう部分を考えても最小要素を持つ集合)であるという点が、根源的。…「実数」や「整数全体」では駄目で「0以上の整数」ならいい。

教科書では、天下り的に定義域・値域が示され、もやもやするが、これで隅々まで透明になった。心置きなく前進しよう。(つづく)

✿ ✿ ✿


2022-04-04 ユークリッド整域(その3) d-不等式は公理じゃないんだからねっ

べ、別にあんたのこと証明したいとか、そうゆーんじゃなくて…。ただ、さまつな定理のくせに公理のふりするなんて許せないから、身の程わきまえさせてあげるだけッ! エエカッコシィの、エレガントでエリート気取りの公理論的扱いなんて、これっぽっちも好きじゃないんだから…。勘違いしないでよねッ!

49. 前回、「ユークリッド整域」の定義に関連して、関数 d が満たすべき条件――46. の(☆)――の真意を明らかにした。もう一度整理すると:

整域 R の2要素 a, b について、a を b で「割り算」して商が q, 余りが r になったとする。具体的に、こう書けるとしよう:
  a = bq + r  ‥‥ ①
このとき「もし r = 0 であるか、または d(r) < d(b) であるなら」*1、①を「ユークリッドの割り算」と呼ぼう。「R がユークリッド整域である」というのは、R の任意の2要素 a, b について(ただし b ≠ 0 とする*2)、ユークリッドの割り算が成立することをいう。ここで関数 d は、「R の0以外の全要素」を定義域とし*3、「0以上の整数」を値域とする*4

*1 d(0) = 0 とするなら、割り切れる場合(r = 0)を別扱いせず、簡潔に「もし d(r) < d(b) であるなら」と言える。そうしないで、割り切れる場合をわざわざ別扱いする理由については、前回参照。

*2/*3/*4 「b = 0 を禁止する理由」「d の定義域から 0 を除外するが値域には 0 を含める理由」も、前回確かめた。

【例】 商 q と余り r は、1通りに決まらなくても構わない。例えば、通常の整数の世界 R において、19を5で割るとしよう。素朴に考えると商は3、余り4:
  19 = 5 × 3 + 4 ← 余り4のサイズは、割る数5のサイズより小さい(OKね)
上記は「ユークリッドの割り算」だが、例えば商4、余り−1としても、正しいユークリッドの割り算となる:
  19 = 5 × 4 + (−1) ← 余り−1のサイズは、割る数5のサイズより小さい(OKね)
でも例えば商2、余り9では、ユークリッドの割り算にならない:
  19 = 5 × 2 + 9 ← 余り9のサイズは、割る数5のサイズより小さくない(駄目ねっ)

50. 今回の本題。多くの教科書では、ユークリッド整域の定義というか公理として、d にもう一つの条件を課している:
  (★) R の任意の2要素 a, b(どちらも 0 でないとする)について、d(a) ≤ d(ab)

(★)は「van der Waerden の不等式」とか「d-不等式」とか呼ばれるが、内容的な意味は単純で「a の倍数(詳しく言えば a を b 倍したもの)のサイズ」は「a のサイズ」以上…というだけのこと。普通の整数の世界や、一般の整域――広い意味での整数的な世界――において、「0倍以外の倍数は、もともとの数以上のサイズを持つ」というのは当たり前に思える*5。当たり前のことなので、公理と認めてもいいのだが…。この(★)の性質を持つ関数 d の存在は、実は論理的には「定義」の一部ではなく、定理であり、上記「ユークリッド整域の定義」から導かれる。

定理を証明せず「公理として受け入れろ」と押し付けるのは、好ましいことではない。ってゆーか、教科書にそんないいかげんな記述があるなんて、許せないわねッ!

だから今から私が、49.で定義した d があれば、必ず(★)を満たす d も存在する…ってことを証明してあげるわッ。べ、別にあんたが好きだから分かりやすく書いてあげるとか、そうゆーんじゃなくて、私が証明したいから証明するだけなんだから…。勘違いしないでよねッ!

*5 当たり前と言えるかどうかは微妙。例えば mod 5 の世界において、a = 4, b = 2 として、「普通の整数と解釈したときの大小」をサイズの尺度とした場合、ab ≡ 3 のサイズは a 以上にならない(3 は 4 以上ではない)。だからといって「mod 5 の世界は、ユークリッド整域じゃない」というわけでもない。この世界では「普通の整数と解釈したときの大小」は、正しいサイズの尺度ではないのである…。話がそれるので今は深入りせず、この件については、後でゆっくり考えよう。

さて、49. の定義を満たす d が存在したとしよう。0 以外の任意の a ∈ R について、「a のサイズ」d(a) が定まるわけだが、「a の倍数 ka のサイズ」d(ka) も考えられる(ただし k は R の要素で0以外)。(★)の条件が天下り的に与えられていないため、d(ka) ――例えば、
  …, d(−3a), d(−2a), d(−1a), d(1a), d(2a), d(3a), …
といったサイズたち――は、d(a) より大きいかもしれないし、等しいかもしれないし、小さいかもしれない。d の条件は「値が0以上の整数」というだけの弱いものなので、ひどく漠然としている…。けれど、
  選択した要素 a に対応して定まる集合
  Sa = {d(ka) | k ∈ R かつ k ≠ 0}
は、一般には無限集合だけど各要素は0以上の整数なので、必ず最小の要素を持つ。例えば仮に「3 は Sa の要素だが、0, 1, 2 は Sa の要素でない」とすれば、最小要素は 3。

例えば、ある a に対して、それを k1 倍した k1a のサイズ d(k1a) が21だったとしよう。同様に、k2a のサイズが3で、k3a のサイズが12だったとしよう。すると集合 Sa は {21, 3, 12, …} ということになる。

一般に、0以外の任意の a が与えられたとき、それに対応して、集合 Sa の最小要素(それを y としよう)が定まる。この関係を y = ƒ(a) とすると、この新しい関数 ƒ の出力は、d(ka) の値の一つなので、0以上の整数。ƒ は任意の a ≠ 0 に対して d(ka) 経由で定義されるので、定義域・値域とも d と同様。のみならず、R はユークリッド整域なので d
  a = bq + r
について、
  r = 0 または d(r) < d(b)
を満たすが、すぐ後で証明するように、
  r = 0 または ƒ(r) < ƒ(b)
も成立し、しかも、この新しい関数 ƒ は、自動的に(★)すなわち d-不等式を満たす!

関数 ƒ をあらためて関数 d と呼ぶと、結論として: 49. の意味での「弱い d」が存在するなら、49. の条件と(★)を両方満たす「強い d」も存在する。

51. 上記の主張の証明。

【1】 ƒ の意味から、
  a のどのような(0倍以外の)倍数 ka を考えても ƒ(a) ≤ d(ka)  ‥‥「ア」
が成立(なぜなら ƒ(a) とは、一番小さい d(ka) の値であり、だから、どんな k を選んでも、ƒ(a) は d(ka) 以下)。特に k = 1 を選択すると、ƒ(a) ≤ d(1a) が成立。つまり:
  ƒ(a) ≤ d(a) ここで a は R の任意の要素(a ≠ 0) ‥‥「イ」

【2】 ƒ(x) とは、「d(kx) の値が一番小さくなるように k を選んだ」ときの d(kx) の値(k ≠ 0)。だから、ƒ(x) の値については、何らかの k′ ∈ R を使って、ƒ(x) = d(k′x) のように d の関数値としても表現可能:
  ƒ(x) = d(k′x) を満たす k′ ∈ R が存在(k′ ≠ 0)  ‥‥「ウ」

【3】 今、ƒ が(★)の条件を満たすこと、すなわち
  ƒ(a) ≤ ƒ(ab)  ‥‥「エ」
が成り立つことを証明する。ab を「ウ」の x だと思うと、「エ」の右辺について
  ƒ(ab) = d(k′ab)  ‥‥「オ」
と書ける。ところが k′ab は a の倍数なので、「ア」で k = k′b とすれば
  ƒ(a) ≤ d(k′ab)
となる。「オ」によって、この右辺を、値の等しい式に置き換えると:
  ƒ(a) ≤ ƒ(ab)
これで「エ」が証明された!

【4】 次に、R が ƒ を尺度としてもユークリッド整域であることを証明する。言い換えれば、その世界 R においては、任意の a, b に対して(b ≠ 0)、商 q と余り r をうまく選べて、
  a = bq + r ただし r = 0 または ƒ(r) < ƒ(b)  ‥‥「カ」
が成り立つことを示す。まず、「ウ」によってこう書ける:
  ƒ(b) = d(k′b)  ‥‥「キ」

仮定により、R は d を尺度としてユークリッド整域なので、a を (k′b) で割り算すると:
  a = (k′b)q′ + r′ ただし r′ = 0 または d(r′) < d(k′b)  ‥‥「ク」
となるような q′, r′ ∈ R が存在。このとき q = k′q′, r = r′ と置くと:
  a = bq + r
となって「カ」の最初の部分が成り立つ。あとは「カ」の「ただし書き」が成り立つことさえ示せばいい。もし r = r′ = 0 なら、つまり「ク」の「または」の前が成り立つなら、「カ」でも「または」の前の条件に当てはまるので、それでいい。問題は、r = r′ ≠ 0 の場合、つまり「ク」の「または」の後ろの
  d(r′) < d(k′b)  ‥‥「ケ」
が成り立つ場合。この場合には「カ」の「または」の後ろの
  ƒ(r) < ƒ(b)
が成り立つ…ということを示したい。

「ケ」の左辺について、r = r′ ということと「イ」から:
  ƒ(r) ≤ d(r) = d(r′)
一方、「ケ」の右辺は「キ」によって ƒ(b) に等しいのだから、結局「ケ」から次のことが言える:
  ƒ(r) ≤ d(r′) < d(k′b) = ƒ(b)
  要するに ƒ(r) < ƒ(b)
これが示したいことだった。□

ぐ…偶然よ、偶然! たまたま不等号の向きが同じになっただけ…。だ、だけど、ƒ(r) は赤いやつ以下で、ƒ(b) は緑のやつと等しいわけで、そんでもって赤が緑より小さいんだから、ƒ(r) は ƒ(b) より小さくなるしかないじゃない…。あんたがユークリッド整域ってことは、バレバレなんだから♡ 素直に認めなさいッ!

以上は、K. Conrad: Remarks About Euclidean Domains の Theorem 2.1 に当たる。
https://kconrad.math.uconn.edu/blurbs/ringtheory/euclideanrk.pdf

✿ ✿ ✿


2022-04-08 ユークリッド整域(その4) d-不等式の性質

前回、ふざけてツンデレ文体を交ぜてみたが、ふざけることは、学習効果をアップさせる! 心が動いた思い出は、記憶に残りやすいので…。無味乾燥に教科書を読まず、ちょっとでも面白いと感じたら「すげえ!」、理解できたら「うぉぉ、分かったぞ」と、子どもみたいに大げさにリアクションしてみよう。それだけで、記憶力200%アップw(当社比)

52. ユークリッド整域の尺度 d は、非常に弱い(漠然とした)条件――値域が0以上の整数ってだけ――で十分。そのような尺度が存在すれば、必ず、次の性質を持つ強い尺度 d も存在する(50. 以下参照):
  d(a) ≤ d(ab)

51. の証明がピンとこない・面倒という人は、「上の不等式(d-不等式)は、ユークリッド整域の定義の一部なのだ」とうのみにしても構わない。実際、多くの教科書ではそうなってる。例えば MIT OpenCourseWare: 18.703 Modern Algebra, Spring 2013 の講義ノートを見ると…

PNG画像
https://ocw.mit.edu/courses/18-703-modern-algebra-spring-2013/resources/mit18_703s13_pra_l_20/

便宜上はそれでもいいけど、「これは本質的には定義でなく、定義からこの部分を削除しても、定理としてそれを証明・復元できる」という事実関係を押さえておきたい。

ともあれ、d-不等式さえ手に入れば、ユークリッド整域⇒一意分解は、もう証明できたようなもの。分解の一意性は深い性質だが、ユークリッド整域では「素数」と「分解不可能」が同値であることを証明済みなので、一意性は、素数の定義から導かれる。問題は「分解がそもそも存在するか・分解不可能な因子の有限個の積になる保証があるのか」だが、ここで d-不等式が役立つ。

せっかくここまで来たので、この道を進んでみたい。

現代の教科書では、ユークリッド整域⇒一意分解をダイレクトに導かず、ユークリッド整域⇒PID⇒一意分解という抽象代数的議論が一般的だが、この教科書ルートについては後回しにする。

(マニアックな注) 上記MITの定義では、ユークリッドの割り算において「(割る数だけでなく)割られる数も 0 じゃない」という余計な条件が忍び込んでいる。d-不等式とユークリッド整域の定義を合体させた副作用だろう。変数名 a, b は、われわれの定義とは逆になっている(これは本質的な問題ではない)。

53. 冒険を進める前に、必要なアイテムを…

補助定理1(K. Conrad: Theorem 3.1) R をユークリッド整域として、サイズの尺度 dd-不等式を満たすとする。a, b をその世界の任意の2要素(ただし、どちらも0以外)とするとき:
  「前編」 d(1) ≤ d(a)
  「中編」 b が単数なら d(a) = d(ab)
  「後編」 b が単数でなければ d(a) < d(ab)

解説 「前編」は「どの要素のサイズも、1のサイズ以上」つまり「1のサイズより、もっと小さいサイズの要素はないんだよ!」と言っている(1のサイズが具体的にいくつか?というのは、考えている世界の設定によって異なる)。「中編」は、「要素を単数倍しても、サイズは変わらない!」と主張している。「後編」は、「単数倍以外の倍数は、サイズが大きくなる!」と主張している。0 を除外しているので、どれもこれも直観的には当たり前。証明済みの d-不等式
  d(x) ≤ d(xy)  ‥‥「★」
は…
  「右辺 d(xy) は、左辺 d(x) より大きいか、または左辺に等しい」
…というものだが、「後編」が「より大きい」場合に当たり、「中編」が「等しい」場合に当たる。要するに、倍率 b が単数か・単数でないかによって、この区別が生じる。

証明 「★」で x = 1, y = a と置くと d(1) ≤ d(a)。つまり「前編」が成立。

b が単数なら、その逆数 b−1 が存在。「★」で x = ab, y = b−1 と置くと
  d(ab) ≤ d(abb−1) = d(a)
つまり b が単数なら《ab のサイズは a のサイズ以下》。一方、d-不等式により、常に《ab のサイズは a のサイズ以上》。この二つの《》内を両立させるためには、ab のサイズと a のサイズが等しくなる必要がある。つまり「中編」が成立。

最後に「後編」だが、直観的に「b が単数でないなら ab のサイズが a のサイズより大きい」というのは、当たり前だと感じられる。この「当たり前のようなこと」を形式的に証明するには…。a と ab の大小が問題なのだから、方向性としては、比を考えてみたらどうだろう…。この世界 R はユークリッド整域なので、ユークリッドの割り算によって、次のように a を ab で割ることができる:
  a = (ab)q + r  ‥‥「タ」
  ただし r = 0 または d(r) < d(ab)  ‥‥「チ」

a を(それより大きいはずの)ab で割ろうとすれば、商 q = 0、余り r = a に「なるはず」。従って「または」の後ろが d(a) < d(ab) となり(r = a なので)、つまり「後編」が成り立つのだが、「なるはず」という感覚だけでは、証明にならない(感覚だけだと、錯覚もあり得る)。では、どうすれば?

とりあえず、「または」の前ではなく後ろが使われること、つまり余り r が 0 でないことだけでも、証明できないか…。「タ」を r について解くと:
  r = a − abq = a(1 − bq)  ‥‥「ツ」
補助定理の仮定から a は 0 でないので、この r が 0 になるとしたら、1 − bq = 0 つまり bq = 1 となる必要がある(なぜなら、R は整域なので零因子がない)。ところが仮定より b は単数でないので、逆数を持たない。つまり bq = 1 を満たすような q ∈ R は存在しない。だから bq は 1 にはなり得ず、従って 1 − bq は 0 ではなく、r すなわち「ツ」も 0 ではない。このことから、「チ」は次を含意する(r に「ツ」を代入):
  d(a(1 − bq)) < d(ab)  ‥‥「テ」

さて、d-不等式によって d(a) ≤ d(ab) ということは既に分かっているので、d(a) ≠ d(ab) さえ示せれば、「後編」が証明される。背理法を使うため、仮に d(a) = d(ab) だとすると、「テ」の右辺を d(a) で置き換えることが可能になり:
  d(a(1 − bq)) < d(a)  ‥‥「仮定上の結論」

ところが、正しい不等式「★」において x = a, y = 1 − bq とすれば
  d(a) < d(a(1 − bq))  ‥‥「正しい結論」
なので、「仮定上の結論」は不等号の向きが間違っている!

この矛盾の原因は、もちろん「仮に d(a) = d(ab) だとすると」というむちゃな仮定。すなわち、b が単数でないなら d(a) ≠ d(ab) でなければならない。これで「後編」が示された。□

わーい、証明できたできた! うれしいなったら、うれしいな♪

✿ ✿ ✿


2022-04-11 ユークリッド整域(その5・最終回) 攻略完了

54. 整域についての議論では non-zero, non-unit という句が反復され、うっとうしい。用語・概念を分かりやすく整理するため、「0 と単数」を特殊要素と呼び、それ以外の要素を通常要素と呼ぶことにしよう。

整域 R の通常要素 a ∈ R が「分解不可能」というのは、a = bc を満たす任意の b, c ∈ R について、b または c が単数になってしまう状況を指す。

一方、a が「分解可能」というのは、a = bc を満たす2個の通常要素 b, c ∈ R が(少なくとも一組は)存在する状況を指す。

さて、通常要素 a について、以下の条件が満たされるとき、「分解が完了する」と表現することにしよう。

【例1】 整数の世界において、6 は 2 × 3 という2因子(どちらも分解不可能)の積として表されるので、分解が完了する。12 も 2 × 2 × 3 という3因子(どれも分解不可能)の積として表されるので、分解が完了する。

【例2】 整数の世界において、7 は、それ自身、分解不可能なので、分解が完了する。7 の分解結果は 7 自体(分解不可能な「1因子の積」)…と解釈することもできる。その解釈を使えば、「分解が完了=分解不可能な因子の有限個の積になる」と説明を一本化できる。早い話が「おまえはもう分解されている」(最初から素数なら何もしないで分解完了w)

時計ワールド」のように、分解が無限に終わらない世界もあるので、一般論として、分解が必ず完了するとは限らない。

もっとも「時計ワールド」は整域ですらない。まさかユークリッド整域(それはトップクラスの整域である)では、「分解が無限に続く」なんて変なことは起きないだろう…。それを証明しよう。

55. R をユークリッド整域とする。一般性を失うことなく、サイズの尺度 dd-不等式を満たすと仮定できる50. / 51.)。「補助定理1」として、次の3つのことを証明した(53.)。a, b をその世界の任意の2要素(ただし、どちらも0以外)とするとき:
  「前編」 d(1) ≤ d(a)
  「中編」 b が単数なら d(a) = d(ab)
  「後編」 b が単数でなければ d(a) < d(ab)

「前編」によって、任意の a のサイズは d(1) 以上。つまり関数 d の値は d(1) が最小。b が単数なら、そのサイズ d(b) は、この最小値 d(1) に等しい。それを示すには「中編」において a = 1 と置けばいい。逆に、サイズ d(b) がこの最小値なら、b は単数。それを示すには「後編」において a = 1 と置けばいい。

補助定理2 x, y が任意の通常要素のとき、d(x) も d(y) も d(xy) より小さい。

証明 d(x) < d(xy) を示すには、補助定理1「後編」において a = x, b = y と置けばいい。d(y) < d(xy) を示すには「後編」において a = y, b = x と置けばいい。□

定理(分解の存在) ユークリッド整域 R では、どの通常要素 a も、必ず分解が完了する。

証明 仮に、分解が完了しないような変な要素が1個以上、存在するとしよう。すなわち、「分解が完了しない変な要素たち」の集合
  {変1, 変2, 変3, …}
は、空ではないとする。すると、そのような変な要素たちのサイズの集合
  {d(変1), d(変2), d(変3), …}
も、空ではないが、これは0以上の整数の集合なので、必ず最小要素を持つこの観察が鍵!)。要するに、「分解が完了しない変な要素たち」の中には、サイズが最小のものが存在する――そのサイズ最小の変な要素を、まぁ s とでもしよう。サイズ最小になる要素が2個以上あるなら、そのうち一つを任意に選んで s とする。

さて、この s は、それ自身、分解不可能ではない(もしそれ自身、分解不可能なら、前述のように「おまえはもう分解されている」)。だから、何らかの通常要素 x, y ∈ R が存在して、s = xy を満たすはず。ここで、もし x, y どちらも分解が完了するなら――例えば x が○個の因子の積として分解が完了し、y が△個の因子の積として分解が完了するなら――、s = xy は○ + △個の因子の積として分解が完了するが、それじゃ仮定と矛盾する。従って、x, y の少なくとも一方は、分解が完了しない。ところが、補助定理2によって、
  d(x) も d(y) も d(xy) = d(s) より小さい。

これは、ばかげている! だって、分解が完了しない要素の中でサイズ最小のものを s としたんだよ。それなのに、「それよりもっとサイズが小さい、分解が完了しない要素」が存在するだなんて…。つまり「分解が完了しないような変な要素が1個以上、存在する」という冒頭の仮定は、間違っている。□

この証明は K. Conrad: Theorem 4.2 を簡単化したもの。ユークリッド整域では「素数」と「分解不可能」は同じ意味なので、結局、ユークリッド整域では素因数分解が完了する

ユークリッド整域に限らない場合、「分解不可能だが素数ではない」という現象が起こり得る。

素因数分解の一意性も、ガウス整数の場合と同様に示される: 44. では、一意性に関する証明において「要素がガウス整数」という仮定を使っていないので、あの証明法は(ガウス整数の世界に限らず)より広い範囲に適用可能。分解不可能な通常要素が素数になる世界なら(ユークリッド整域ではそうなる)、素因数分解は一意的。

ユークリッド整域は一意分解整域」だということを、イデアルを使わずに、直接証明できた!

✿ ✿ ✿


2022-05-11 15² + 20² = 25² = 625 = 7² + 24² の秘密

【起】 32 + 42 = 52 の関係は、よく知られている。a = 3, b = 4, c = 5 とすれば:
  a2 + b2 = c2
このとき、a, b, c をそれぞれ5倍すると:
  (5a)2 + (5b)2 = (5c)2
  つまり 152 + 202 = 252

この関係は、32 + 42 = 52 の両辺を 52 倍(つまり25倍)しただけで、特に面白くない。けれど、この式の値 252 = 625 は、次のように、互いに素なピタゴラス・トリオ (7, 24, 25) を使って書くこともできる。
  72 + 242 = 252

〔注〕 252 = 54 は 53 = 125 の5倍なので、625
242 = (2 × 12)2 = 22 × 1224グロスなので、144の2倍の2倍、つまり 288 の2倍、つまり 576
それに 72 = 49 を足すということは、50を足して1を引くことなので、576 + 50 = 626 から 1 を引いて、確かに 625 になる!

【承】 じゃあ a, b, c をそれぞれ25倍したらどうなるだろうか。第1の等式 32 + 42 = 52 の各項を 252 倍すれば、こうなる:
  752 + 1002 = 1252 「ア」

それとは別に、第2の等式 72 + 242 = 252 の各項を 52 倍した式が成り立つのも、当然だろう。
  352 + 1202 = 1252 「イ」

ところが、この 1252 = 15625 (= 56) という数もまた、互いに素なピタゴラス・トリオ (44, 117, 125) を使って書ける!
  442 + 1172 = 1252 「ウ」

3種類もの違ったパターンで、1252 つまり 56 を「2個の平方数の和」で表すことができるらしい…。

「ア」左辺に現れる (75, 100) の最大公約数が 52 = 25 であること、「イ」左辺に現れる (35, 120) の最大公約数が 51 = 5 であること、「ウ」左辺に現れる (44, 117) の最大公約数が 50 = 1 であること(要するに、この2個は互いに素)に注目。

もう一歩進めて、6252 つまり 58 を2個の平方数の和で表すことを考えよう。「ア」「イ」「ウ」の左辺各項を 52 倍すれば、目的を達せられるが、その場合、上と同様に考えた最大公約数は、それぞれ 53, 52, 51 となって、互いに素なピタゴラス・トリオには、ならない。けど、ここまでくれば、もう何となく予感がする…「625 を第3要素とするような、互いに素なピタゴラス・トリオがきっとある」。果たして…
  3362 + 5272 = 6252

〔注〕 336 = 24 × 3 × 7 と 527 = 17 × 31 は互いに素。

【転】 こうなると「5 の偶数乗は、どれも、互いに素な2個の平方数の和として表される」という予想が成り立つ。もしそうなら、次のことも成り立つはず…
  「互いに素」という条件を外した場合、2乗・4乗・6乗・8乗…と上がるにつれ、
  「何パターンで2平方数の和になるか?」というパターン数がだんだん増える。

だって、1段上がることに、「前の段階で成り立っていた等式」の各項を25倍したものがそのまま有効だし、それとは別に、各段階で「互いに素」のケースが新規追加されるんなら、1段階ごとに1パターン増えるじゃん!

それはいいとして、5 の奇数乗はどうなるんだろう。51 = 5, 53 = 125, 55 = 3125 などは、もちろん平方数ではないけど、次のように、2個の平方数の和となることには変わりない:
  12 + 22 = 5 「カ」(1 と 2 は互いに素!)
  52 + 102 = 125 「サ」(これは「カ」の25倍)
  22 + 112 = 125 「シ」(2 と 11 は互いに素!)
  252 + 502 = 3125 「タ」(これは「サ」の25倍)
  102 + 552 = 3125 「チ」(これは「シ」の25倍)
  382 + 412 = 3125 「ツ」(38 と 41 は互いに素!)

どうやら「5の自然数乗は、どれもこれも、互いに素な2平方数の和として書ける」という予想が成り立ちそうだ。しかも、そのような書き方は、ただ一通り。ただし、足し算の順序については区別しない(例えば 32 + 42 と 42 + 32 は同一のパターンと考える)。「互いに素」という条件を付けないなら、この場合も、指数がでかくなるにつれ、パターン数が増える。

この予想は正しいか。この現象の本質は何か。そして、最大の難問として…。次のような問いの答えを、どうやって見つければいいのだろう?
 「難問」 5の24乗は、5京9604兆6447億7539万0625である。この数を互いに素な2平方数の和として表せ。

素直に自然数の問題として考えると、手に負えない感じだが、x2 + y2 を「ガウス整数 x + yi のノルム」と考えると「ノルム 5n のガウス整数」の問題になる。ガウス整数の世界では、
  5 = 22 + 12 = (2 + i)(2 − i)
と素因数分解され、ノルム 5 のガウス整数は(単数倍の違いを無視すると) 2 + i と 2 − i の2種類のみ。従って、例えばノルム 53 = 125 のガウス整数は(単数倍の違いを無視して)次の通り。
  (2 + i)3 = 2 + 11i 「ナ」
  (2 − i)3 = 2 − 11i 「ナ」の共役
  (2 + i)2(2 − i) = 10 + 5i 「ニ」
  (2 − i)2(2 + i) = 10 − 5i 「ニ」の共役

共役は、虚部の符号が逆になるだけなので、個別に計算するまでもない。ガウス整数の「ナ」と「ニ」が、それぞれ普通の整数の「シ」と「サ」に対応している。さらに、「ニ」のように、2種類の因子を混ぜこぜにすると、両辺が
  (2 + i)(2 − i) = 5
で割り切れ、対応する2平方数は、「サ」のように、互いに素にならない。互いに素な2平方数の和を得たければ、「ナ」のように、1種類の因子を選んで n 乗すればいいようだ。

【結】 かくして「難問」は、(2 + i)24 という機械的計算に帰着される。

24乗を二項定理(パスカルの三角形)でばか正直に展開すれば、とんでもない計算地獄になることは目に見えている。やり方はいろいろあるが、ここではまず3乗してから、繰り返し2乗しよう。
  (2 + i)3 = 8 + 3⋅4⋅i + 3⋅2⋅(−1) − i = 2 + 11i
  (2 + i)6 = (2 + 11i)2 = 4 + 44i − 121 = −117 + 44i
後はこれを2回、平方するだけ。ちょっと面倒だが、単純な機械的計算:
  (2 + i)12 = (−117 + 44i)2 = 13689 − 10296i − 1936 = 11753 − 10296i
  (2 + i)24 = (11753 − 10296i)2
  = 138133009 − 242017776i − 106007616 = 32125393 − 242017776i

この最後の複素数のノルムが 524 なのだから:
  321253932 + 2420177762 = 524

これが「難問」の答え! 両辺が等しいことは単純計算で確認できるが、しょぼい電卓だと、桁数が多過ぎて処理できないかも…。「互いに素」という部分については…
  32125393 = 17 × 31 × 47 × 1297
  242017776 = 24 × 32 × 7 × 11 × 13 × 23 × 73
確かに 1 より大きい公約数はない。

自然数の問題をあえて複素整数の範囲で考える」という軽妙なアプローチによって、一見手に負えないような難問が、単純な計算問題に帰着された!

何となくうれしいネ。

この例題を少しずつ一般化して、視野を広げていこう。(続く

✿ ✿ ✿


2022-05-12 7² + 24² = 25² の秘密(その2)

前回は x2 + y2 = 524 の(互いに素な)整数解を見つけた。24乗は、いくらなんでもでか過ぎるので、54 = 252 = 625 を例に、ゆっくり整理し直してみよう。

【ステップ1】 5 は自然数の素数だが、ガウス整数の範囲では 5 = 22 + 12 = (2 + i)(2 − i) と分解される。以下では、この第1因子 2 + i を F として、第2因子 2 − i を G とする。

F = 2 + i と G = 2 − i は、どちらもガウス素数

というのも、ガウス整数が分解されるためには、対応するノルムが、普通の整数として素因数分解されることが必要。norm(F) = norm(G) = 5 は、普通の整数としては素数で、それ以上分解できないので、今言った必要条件を満たしてない(だから、F も G も、ガウス整数として分解不可能)。

あるガウス整数 Z = x + yi のノルムは、norm(Z) = x2 + y2

だから、x2 + y2 = n のように自然数 n を2個の平方数の和で表すことは、norm(Z) = n を満たすガウス整数 Z を見つけることと同じこの観察が鍵)。

〔例〕 x2 + y2 = 13 を解くことと、norm(x + yi) = 13 を解くことは、同じ意味。3 + 2i は、後者の条件を満たすけど、x も y も2乗されるのだから、符号はプラスでもマイナスでもいい。x + yi = ±3 ± 2i の4パターン全部OK(もっとも 32 + 22 と 32 + (−2)2 とかは、同じようなもんだけど)。足し算の順序を区別するなら、±2 ± 3i の4パターンも追加される(32 + 22 と 22 + 32 とかも、本質的に同じ和だけどね)。

「実質的に同じ足し算」を、上記のように細かく区別するなら、norm(x + yi) = n を満たす x + yi が1個見つかるごとに、計8種類のバリエーションが見つかったことになる。例外として、仮に x = 0 なら ±x は同じなので、バリエーションが半減。y = 0 の場合も、同様にバリエーションが半減。さらに、x = y の場合、足し算の順序を変えても全く同じことなので、やはりバリエーションが半減。それらの例外を除けば、一般には8種類のバリエーションがある。こんなふうに…
  32 + 22, 32 + (−2)2, (−3)2 + 22, (−3)2 + (−2)2,
  22 + 32, 22 + (−3)2, (−2)2 + 32, (−2)2 + (−3)2

【ステップ2】 積のノルムは、ノルムの積: 任意の2個のガウス整数 A と S について、積 AS のノルム norm(AS) は、norm(A) × norm(S)。

もし、例えば S = BC なら、norm(S) = norm(BC) = norm(B) × norm(C) となる。

従って norm(ABC) = norm(A) × norm(S) = norm(A) × norm(B) × norm(C)。

4個以上の数の積でも、全く同じ: norm(ABCD) = norm(A) norm(B) norm(C) norm(D) 等々。

【ステップ3】 今は x2 + y2 = 54 を考えているのだった。そして、それは norm(□) = 54 の □ に当てはまるガウス整数を見つけることと同じだった。54 は、もちろん 5 × 5 × 5 × 5 なので、このノルムの分解としては、ステップ2で norm(A) = norm(B) = norm(C) = norm(D) = 5 とするしかなさそうだ。A, B, C, D が具体的に何なのかは、ともかくとして…
  norm(□) = 54 の □ に当てはまるガウス整数は、4個のガウス素数 A, B, C, D の積
  norm(ABCD) = 5 × 5 × 5 × 5
  norm(A) norm(B) norm(C) norm(D) = 5 × 5 × 5 × 5
  norm(A) = norm(B) = norm(C) = norm(D) = 5

【重要!】 A, B, C, D はノルムが等しいというだけで、A = B = C = D とは限らない! 例えば A = 2 + i, B = 2 − i なら A ≠ B だけど norm(A) = 22 + 12 = 5 と norm(B) = 22 + (−1)2 = 5 は等しい。

ノルム5のガウス整数」4個の積って、具体的に何だろう? 8種類の細かいバリエーションのうち、単数倍の違いを無視*1して F = 2 + i と G = 2 − i に話を絞ると…。A, B, C, D の一つ一つは、F か G かのどちらか一方。選択肢としては「F が 4個で G が0個」「F が3個で G が1個」「F が2個で G が2個」等々。つまり…
  □ = ABCD
  = FFFF または FFFG または FFGG または FGGG または GGGG

これらの値を具体的に計算すると…
  F4G0 = (2 + i)4 = −7 + 24i 「ハ」
  F3G1 = (2 + i)3(2 − i) = 15 + 20i 「ヒ」
  F2G2 = (2 + i)2(2 − i)2 = 25 + 0i 「フ」
  F1G3 = (2 + i)(2 − i)3 = 15 − 20i 「ヒヒ」
  F0G4 = (2 − i)4 = −7 − 24i 「ハハ」

*1 ここで単数倍の違いを無視していい正確な理由については、次回、検討する。

【ステップ4】 積の共役は、共役の積。「ヒヒ」の因子のうち、2 + i は、「ヒ」の因子 2 − i と共役。「ヒヒ」の残りの因子 (2 − i)3 = (2 − i)(2 − i)(2 − i) は「ヒ」の残りの因子 (2 + i)3 = (2 + i)(2 + i)(2 + i) と共役。結局、「ヒ」と「ヒヒ」は共役(共役である因子たちの積なので)。同様に「ハ」と「ハハ」も共役。共役とは虚部の符号だけが違う数なので、符号の違いを無視すれば、上記の5パターンは「ハ」「ヒ」「フ」の3パターンのガウス整数に整理される。それら3パターンのガウス整数は、どれもノルムが 54 = 625 だけど、ノルムの公式に当てはめると、同じ 625 といっても別の種類の「2平方数の和」となる:
  (−7)2 + 242 = 72 + 242 = 625 「は」
  152 + 202 = 625 「ひ」
  252 + 02 = 625 「ふ」

72 + 242 = 625 (= 252) の正体が見えてきた…。符号の違いを無視すると「ノルム625のガウス整数」は3パターンあって(7 + 24i と 15 + 20i と 25)、話題の 72 + 242 は、そのうち 7 + 24i のノルムに当たる。

では、「7 と 24 が互いに素」という事実の理論的背景は何か?

「フ」は (2 + i)2(2 − i)2 = [(2 + i)(2 − i)]2 = 52 = 25 なので、もちろん右辺の実部 25 も虚部 0 も、自然数 25 で割り切れる(5 で2回割り切れる)。一方、「ヒ」の (2 + i)3(2 − i) は (2 + i)(2 − i) = 5 で(1回だけ)割り切れるので、右辺の実部 15 も虚部 20 も、自然数 5 で(1回だけ)割り切れる。…これらの事実に対応して、「ふ」左辺の 25, 0 は公約数 25 を持ち、「ひ」左辺の 15, 20 は公約数 5 を持つ。

他方、「ハ」は因子 (2 + i)(2 − i) = 5 を含まないため、5 で(1回も)割り切れない。言い換えると「ハ」の左辺 (2 + i)4 は 5 で割り切れない。だから「ハ」右辺の実部・虚部は 5 で割り切れない。従って「は」左辺の 7, 24 は、公約数 5 を持たない。

単数倍の違いを無視すると: ガウス整数の範囲で、5 = (2 + i)(2 − i) と素因数分解される。それ以外の素因子から、5 を作ることはできない。つまり 5 やその倍数を作るには、素因数 2 − i が不可欠。ところが「ハ」には(単数倍の違いを無視しても)因子 2 − i は含まれてない。

【ステップ5】 「は」が公約数 5 を持たないのは分かったけど、「5 以外の(1より大きい)公約数を持つ可能性」はないか?

7 と 24 が互いに素なのは直接確かめられるけど、一般論として、この立場の2数が互いに素と言い切れるか?

もし仮に −7, 24 が 素数の公約数 p を持つなら、そのときには: −7 も 24 も p で割り切れるのだから、「ハ」の右端の複素数は p で割り切れるはず。すると、それに等しい (2 + i)4 も p で割り切れるはずだが、それは不可能。なぜなら…

(ケース1) p がガウス整数としても素数なら、素因数分解の一意性から、上記の主張は明白。つまり、自然数であるガウス素数 p は、複素数 2 + i とは異なる素数であり、同じガウス整数 −7 + 24i = (2 + i)4 が2通りの素因数分解を持つことはない。

(ケース2) ガウス整数として p = PQ と分解される場合、norm(p) = p2 = norm(PQ) だから norm(P) = norm(Q) = p となる。(2 + i)4 がガウス素数 P や Q で割り切れるとしたら、素数の性質上、2 + i が P や Q で割り切れなければならない。そんなことが可能だろうか…。ノルムを考えると、可能性があるとすれば、norm(2 + i) = 5 が p で割り切れることが必要――それは p = 5 の場合に限られる。ところが (2 + i)4 が 5 で割り切れる可能性は、既に否定されている!

同様に、「ひ」の (15, 20) や「ふ」の (25, 0) が公約数 p を持つなら、norm(2 + i) または norm(2 − i) の少なくとも一方が p で割り切れることが必要。このことから、「ひ」の (15, 20) や「ふ」の (25, 0) は、5 のべき以外の公約数を持つことはない。

というわけで…

因子 F = 2 +  i と G = 2 − i を合計4個選ぶ場面において、「ハ」のようにどちらか一方だけを4個選ぶなら、結果の積は FG = 5 で割り切れない――より一般的に、どんな(自然数の)素数 p でも割り切れない(従って、1より大きい自然数で割り切れない)。つまり、そのように構成したガウス整数 x + yi は、実部 x と虚部 y が互いに素(もちろん、それらを2乗した x2 と y2 も、互いに素)。

「F だけ4個」の代わりに、共役の G だけを4個選んてもいいが、G4 は F4 の共役。「ハハ」のようになって、符号を無視した最終結果は同じ。

同様に考えれば、5の任意のべき 5e を「互いに素な2平方数の和」で表すことが、必ずできるはず(e = 1, 2, 3, …)。実際、前回いろんな具体例を観察した。

では、一般に、与えられた任意の自然数 n を「2平方数の和」で表すことができるのだろうか。できるとして、何パターンの表し方があるのだろうか。(続く

✿ ✿ ✿


2022-05-15 7² + 24² = 25² の秘密(その3) 単数倍の違いの件

その2の続き。

【1】 x2 + y2 = 54 = 625 は、符号の違い・足し算の順序の違いを無視すると、3種の整数解を持つ:
  02 + 252 = 625
  152 + 202 = 625
  72 + 242 = 625

解法を整理すると、54 = 625 に着目して、norm(Z) = 54 を満たすガウス整数 Z を探せばいい。そういう Z が存在するなら「ノルム5のガウス整数」4個の積になるはず…。「ノルム5のガウス整数」は、単数倍の違いを無視すると F = 2 + i, G = 2 − i の2種類。そこで、
  Z = F4, Z = F3G, Z = F2G2
を計算すると、上記3種類の解に対応するガウス整数が得られる。

【2】 この考え方は巧妙だけど、不透明な部分が残っている。第1に、同じ方法で x2 + y2 = 34 = 81 を解こうとすると、「ノルム3のガウス整数」4個の積を作ることになるが、「ノルム3のガウス整数」は存在しないので、うまくいかない。では 81 は2平方数の和で書けないのか…というと、実際には
  02 + 92 = 81
という解が存在する。上の考え方だけでは、まだ一般の自然数 n について x2 + y2 = n を解くことはできない。

第2に、上記 F, G の他にも、「ノルム5のガウス整数」は、いろいろある。例えば H = 1 + 2i とか…。それを使って FFFH とか FFGH とか GGHH とか、いろんな積を考えると、新しい解が見つかるのではないか。「単数倍の違いを無視」の一言で、いろんな組み合わせのパターンをばっさり無視してしまって良いのか?

【3】 第1の点は次回以降に考えるとして、「単数倍の違い」の件。例えば、普通の整数の世界で 30 を素因数分解すると、2 × 3 × 5 だが、もし単数倍の違いを無視しないとすると、
  30 の素因数分解は 2⋅3⋅5 または 2(−3)(−5) または (−2)3(−5) または (−2)(−3)5
…となって、それだけでも面倒くさい。ましてやガウス整数の世界では単数が4種類あり、「ノルム5のガウス整数」は厳密には8種類。その8種類から任意に4個を選んで積を計算する…というのは、あまりにも面倒。「個々の因子について、いちいち単数倍の違いを考える必要はない」ということを、はっきりさせておこう。

普通の整数の世界で、
  (±2) × (±3) × (±5)
の符号の選択は8パターンあるが、この積が ±30 になるのは、明らかだろう。積はプラスにもマイナスにもなり得るけど、いちいち8パターンを個別に考える必要はなく、単に 2 × 3 × 5 を計算して、最後に「±」を付けときゃ十分。

同様のことが、ガウス整数の世界でも成り立つ。そもそもガウス整数の世界における「単数倍」とは何か。具体例として、画像は、複素平面上における F = 2 + i とその単数倍たち(青)、G = 2 − i とその単数倍たち(赤)を示している。

画像: 2±iとその単数倍たち

iF = i(2 + i) = 2i + i2 = −1 + 2i は F の単数倍で、原点を中心に F を90°回転させた位置にある。i2F = −F = −(2 + i) = −2 − i も、単数倍の一種で、原点を挟んで F の180°反対側。i3F = −(iF) = −(−1 + 2i) = 1 − 2i も単数倍の一種で、F を270°回転させた位置(iF の180°反対側)。最後に F 自身、つまり i0F も、F の単数倍。これら4個については、
  iaF (a = 0, 1, 2, or 3)
と要約できる。

同様に、G の単数倍については
  ibG (b = 0, 1, 2, or 3)
と要約できる。

すると、「Fの単数倍」と「Gの単数倍」の積は、細かく考えると16通りあるけど、要するに:
  (iaF) × (ibG) = (iaib)(FG) = (ia+b)(FG)
ここで a+b は0以上6以下の整数だが、i4 = i0, i5 = i1, i6 = i2, … のように i の4乗以上は、元に戻るだけなので、この積は「FG の(4種類ある)単数倍のどれか」になる。16種類の可能性があるわけではない!

同様のことは、任意個の、任意のガウス整数の積についても成り立つ。例えば「Pの単数倍」「Qの単数倍」「Rの単数倍」「Sの単数倍」の積は、
  iaP × ibQ × icR × idS
となるが、a, b, c, d の値を個別に考えるまでもなく、積は「PQRS の単数倍」。

結論: 最終的な積に「単数倍の不確定性」が生じてもいいのなら、因子ごとの単数倍の違いを無視してOK。単数倍の違いについては、いちいち「因子ごとに」考えなくても、掛け算が終わってから「まとめて1回だけ」考えればいい。

〔例〕 FFFG = (FG)F2 = [(2 + i)(2 − i)](2 + i)2 = 5(4 + 4i − 1) = 15 + 20i 「あ」
単数倍の違いの例として、1個目の F を iF に置き換え、2個目の F を i2F = −F に置き換え、3個目の F を i3F = −iF に置き換え、G を iG = 1 + 2i に置き換えたとしよう。掛け算をやり直すまでもなく、その場合の積は…
  (i1F)(i2F)(i3F)(i1G) = i7(FFFG) = i3(FFFG) = −i(15 + 20i) 「い」
…のように「あ」の単数倍になる。
  「い」 = −15i − 20i2 = 20 − 15i
のノルムは、解 202 + (−15)2 = 625 に対応するが、それは「あ」のノルムに対応する解
  152 + 202 = 625
のバリエーションにすぎない。こんなややこしいこと考えなくても、「あ」を直接 −i 倍すれば「い」と同じこと。

【4】 この考え方に基づき、共役も考慮して整理し直すと: 「ノルム625のガウス整数」を表す5種類の積 FFFF, FFFG, FFGG, FGGG, GGGG の一つ一つは、どれも(積の単数倍として)4パターンの細かいバリエーションを代表している。だから x2 + y2 = 625 は、厳密に細かく区別するなら、5 × 4 = 20 種類の整数解を持つ。

「FFFG のとある単数倍と、FFGG のとある単数倍は等しいので、上の数え方だと、重複カウントになる」…みたいな問題が起きる心配はない。というのも、F と G は(単数倍の違いではなく)本質的に異なるガウス素数――図解からも実際の数値からも分かるように、{F の単数倍} の集合と {G の単数倍} の集合には、共通要素が一つもない。

FFFG と FFGG が単数倍の関係になれるとしたら、それぞれ FFG で割ると、「F と G が単数倍の関係」ってことになるよね。{F の単数倍} と {G の単数倍} には共通要素がないのだから、それはあり得ない!

ここで「厳密な細かい区別」というのは、
  72 + 242 = 625 が解なら (−24)2 + 72 = 625 も解
…といった類いの区別で、それ自体は「そりゃそうでしょ」という話。特に面白いことでもない。でも、この角度から考えると、「細かい違いまで区別すると、正確には合計何パターンの解があるのか」という疑問(手動で一つずつ数えるのは大変!)が、単純計算で解決する。使い道によっては、これはこれで便利。

【5】 単数倍の違いには、トリッキーな面もある。ガウス整数の世界では
  5 = (2 + i)(2 − i)
が成り立つが、
  5 = (1 + 2i)(1 − 2i)
も成り立つ。前者を FG とすると、後者は (iG)(−iF) に当たり、掛け算の順序と、因子ごとの単数倍の違いを無視すれば、実はどちらも同じ分解。けど、このことは、素因数分解の一意性が成り立つかどうかについて、混乱の原因になり得る。「ガウス整数の世界はユークリッド整域なので、素因数分解が一意的」という抽象的事実はシンプルだけど、具体的な個々の事例では、何がどうなってんだか、分かりにくいことも…。

教科書的説明(無味乾燥w)
  ガウス整数の共役 = 実部が同じで虚部の符号が反対
  ガウス整数の単数倍 = ±1 倍と ±i 倍

イメージ的理解
  ガウス整数の共役 = 実数軸を挟んだ鏡の世界
  ガウス整数の単数倍 = 90°単位でクルクル回る風車

まぁ、やってりゃそのうち分かるようになるさ…ってな感じで、てきとーに。(続く

✿ ✿ ✿


2022-05-18 7² + 24² = 25² の秘密(その4)

その3の続き。1回まとめてみる。

 x2 + y2 = 5 の整数解は?

norm(Z) = 5 を満たす Z は、単数倍の違いを無視すると Z = F = 2 + i, Z = G = 2 − i の2個。単数倍の違いを無視しないと、それぞれ4種のバリエーションに対応。

バリエーション(バ)は退屈だが、ガウス整数1個につき、その数自身も含めて4種ある:
  F = 2 + i ⇒ norm(F) = 22 + 12 = 5
   バ norm(iF) = norm(−1 + 2i) = (−1)2 + 22 = 5
   バ norm(−F) = norm(−2 − i) = (−2)2 + (−1)2 = 5
   バ norm(−iF) = norm(1 − 2i) = 12 + (−2)2 = 5
  G = 2 − i ⇒ norm(G) = 22 + (−1)2 = 5
   バ norm(iG) = norm(1 + 2i) = 12 + 22 = 5
   バ norm(−G) = norm(−2 + i) = (−2)2 + 12 = 5
   バ norm(−iG) = norm(−1 − 2i) = (−1)2 + (−2)2 = 5
F と G は共役。これら8種の解は、プラスマイナスの符号と足し算の順序を別にすれば、実質どれも同じ。

 x2 + y2 = 52 の整数解は?

norm(Z) = 52 を満たす Z は、単数倍の違いを無視すると F2, FG, G2 の3個。単数倍の違いを無視しないと、それぞれ4種のバリエーションがあって、計12種類。
  F2 = (2 + i)2 = 3 + 4i ⇒ norm(F2) = 32 + 42 = 52
これは有名なピタゴラス・トリオ。下記 norm(G2) も含めて、細かく区別すれば8種類のバリエーションがある。
  FG = (2 + i)(2 − i) = 5 ⇒ norm(FG) = 52 + 02 = 52
くだらない解だが、解には違いない(細かく区別すれば、こっちにも4種のバリエーションあり)。
  G2 = (2 − i)2 = 3 − 4i ⇒ norm(F2) = 32 + (−4)2 = 52
これは F2 の共役なので、F2 経由の解と符号が少し違うだけの解に対応。

 では x2 + y2 = 53 の整数解は?

norm(Z) = 53 を満たす Z は、単数倍の違いを無視すると F3, F2G, G2F, F3 の4個(単数倍の違いまで考慮すると計16種)。
  F3 = (2 + i)3 = 8 + 3⋅22⋅i + 3⋅2⋅i2 + i3 = 8 + 12i − 6 − i = −2 + 11i
  ⇒ norm(F3) = (−2)2 + 112 = 53
右辺が立方数の「拡張ピタゴラス・トリオ」の式 22 + 112 = 53 が得られた!

22 = 4, 112 = 121, 53 = 125 「平方と平方の和が立方」なかなか珍しいパターンだ。

探索を続けよう:
  F2G = (3 + 4i)(2 − i) = 10 − 5i ⇒ norm(F2G) = 102 + (−5)2 = 125
3個の整数が互いに素ではないが、解には違いない。符号を無視すると 102 + 52 = 53
  FG2 これは F2G の共役なので計算略。
  G3 これは F3 の共役なので計算略。

 一般に x2 + y2 = 5e の整数解は(e は自然数)、細かいバリエーションまで区別すると 4(e + 1) 個ある。というのは…
  norm(Z) = 5e を満たす Z は、単数倍の違いを無視すると
  Z = FeG0 または Fe−1G1 または Fe−2G2 … または F0Ge
  ↑ G の指数を ○ とすると ○ = 0 から e まで e+1 種類の選択肢あり
  (G の指数 ○ を選ぶと F の指数は e−○ に決まって選べなくなる)
  そして、その e+1 種類の積一つ一つに対して、単数倍の違いによる 4 個のバリエーションがある。

前々回前回、具体例として e = 4 のケースを詳細に調べた。x2 + y2 = 54 = 252 の整数解は、符号の違いを無視すると、norm(F4), norm(F3G), norm(F2G2) に対応して…
  72 + 242 = 54
  152 + 202 = 54
  02 + 252 = 54
…があって、共役の norm(FG3), norm(G4) もカウントすると5種類、その一つ一つに4個のバリエーション。トータルで 5 × 4 = 20種類のバリエーションがあった:
  e = 4 ⇒ 4(e + 1) = 20

 この調子で進めれば x2 + y2 = 55 とか = 56 とかも、機械的に解けるけど、そろそろ5の「べき」にも飽きてきた…。p が4で割って1余る素数なら、x2 + y2 = p は解を持つ(フェルマーのクリスマス定理)。p = 5 は、そのような最小の p。趣向を変えて、この種の素数で2番目に小さい p = 13 を考えてみたい。

まず x2 + y2 = 13 の整数解は何だろう?

9 + 4 = 32 + 22 = 13 ということは、少し考えるとすぐ分かるが、右辺を13の「べき」に拡張する準備として、ガウス整数の範囲で分解:
  13 = (3 + 2i)(3 − 2i)
この第1因子 3 + 2i を P として、第2因子 3 − 2i を Q とする。ちなみに P と Q は、どちらもガウス素数――どちらもノルムが(普通の意味での)素数 13 だから。…さて norm(Z) = 13 を満たす Z は、単数倍の違いを無視すると Z = P = 3 + 2i, Z = Q = 3 − 2i の2個:
  norm(P) = 32 + 22 = 13
  norm(Q) = 32 + (−2)2 = 13
単数倍の違いを無視しないと、それぞれ4種のバリエーションで、計8種類。
  13 = 131 だから e = 1 ⇒ 4(e + 1) = 8

 次に x2 + y2 = 132 の整数解は?

norm(Z2) = 133 を満たす Z として:
  Z = P2 = (3 + 2i)2 = 5 + 12i ⇒ norm(5 + 12i) = 52 + 122 = 132
これまた有名なピタゴラス・トリオ。Z = Q2 は、共役になるだけなので計算を省く。もう一つの選択肢は:
  Z = PQ = (3 + 2i)(3 − 2i) = 13 ⇒ norm(13) = 132 + 02 = 132
くだらない解だが、解には違いない!

上記 2. と同様、合計12種類のバリエーションがある: e = 2 なので 4(e + 1) = 12。

 じゃあ x2 + y2 = 133 の解は何か。13を第3要素とする拡張ピタゴラス・トリオだが…

ノルム 133 のガウス整数として:
  P3 = (3 + 2i)3 = 33 + 3⋅32⋅2i + 3⋅3⋅(2i)2 + (2i)3
   = 27 + 54i − 36 − 8i = −9 + 46i
   ⇒ norm(−9 + 46i) = (−9)2 + 462 = 92 + 462 = 133

何かすげえ変な式が出てきたぞ。92 = 34 だから、4乗と2乗の和が3乗かぁ…
  34 + 462 = 133

とりあえず検算。462 = (50 − 4)2 = 2500 − 400 + 16 = 2116
462 + 92 = 2116 + 81 = 2197
133 = (10 + 3)3 = 103 + 3⋅102⋅3 + 3⋅10⋅32 + 33
= 1000 + 900 + 270 + 27 = 2197 おおっ、合ってる!

〔注〕 232 = 529 がパッと出るなら*、462 = 529の4倍 = 2000 + (120 − 4) = 2116 としてもいい。133 の計算法も、いろいろ考えられる。例えば
  169 × 3 = (170 − 1) × 3 = 510 − 3 を使うと
133 = 169 × 13 = 1690 + 507 = 2197

*「20台の素数」の2乗は、232 = 529(兄さん、この肉) と 292 = 841(肉、歯良い)の二つ。

ノルム 133 の別のガウス整数として:
  P2Q = (PQ)Q = 13(3 − 2i) = 39 − 26i
   ⇒ norm(39 − 26i) = 392 + (−26)2 = 392 + 262 = 133

直接検算すると 392 = 1600 − 80 + 1 = 1521
262 = 900 − 240 + 16 = 676
1521 + 676 = 2197 となって、確かにこれも合ってる。でも落ち着いて考えると、
  392 + 262 = 133
って、両辺を 132 で約せるじゃん。約すと:
  32 + 22 = 13 つまり 9 + 4 = 13
これが成り立つのは、まぁ当たり前。

PQ2, Q3 は上記の共役。同じような式になるだけなので計算は省くけど、e = 3 だから、全部細かく数えれば 4(e + 1) = 16 種の解がある。

一般に、p が「4で割って1余る素数」のとき、x2 + y2 = pe は、同様にして完全に解くことができる。符号の違い・足し算の順序まで細かく区別した解の一つ一つに至るまで、過不足なく全部検出される。ガウス整数、つええ!

だが驚くのはまだ早い。pe に限らず、右辺が peqf のように複数の素数を含んでいるとしても、同様の手法が成り立つ。おれたちの闘いは、まだ始まったばかりだっ! (第1部・完) 続く

〔付記〕 2197 が 13で割り切れるかの判定法:
末尾の4倍を残りに足す 219 + 7×4 = 219 + 28 = 247
末尾の4倍を残りに足す 24 + 7×4 = 24 + 28 = 52 ← 13の倍数
  28 ≡ 2 (mod 13) なので、実際には次のようにした方が楽:
末尾の4倍を残りに足す 219 + 7×4 = 219 + 28 ≡ 219 + 2 = 221
末尾の4倍を残りに足す 22 + 1×4 = 22 + 4 = 26 ← 13の倍数
 (もし 221 = 130 + 91 = 13 × 17 が見えれば 219 + 2 = 221 だけでOK)

実際に 2197 を 13 で割ってみる:
13×6 = 78, 13×9 = 117 を使う。
 (それぞれ 13×3 = 39 の2倍と3倍)
 (39の2倍&3倍は、40の2倍&3倍=80&120から2&3を引いたもの)
21 ÷ 13 = 1 余り 8
89 ÷ 13 = 6 余り 11 (= 89 − 78)
117 ÷ 13 = 9
つまり 2197 ÷ 13 = 169 = 132, 2197 = 133

✿ ✿ ✿


2022-05-19 x² + y² = n の解の個数 バナナ・スプリットのプディング

前回の続き。

【1】 ちょっと難しい(?)定理を考える。

2以上の自然数は、素数と合成数(=2個以上の素数の積)に分けられる。ここでは、素数
  2, 3, 5, 7, 11, 13, 17, 19, …
のうち、4で割って1余る素数、つまり
  5, 13, 17, …
などを、バニラ素数と呼ぶことにする。

バニラ素数自身やそれを何乗かしたもの(例: 53 = 125, 132 = 169, 171 = 17)、あるいは、そのような数を2個以上掛け合わせたもの(例: 52 × 131 = 325)をバニラ自然数と呼ぶことにしよう。

バニラ自然数 = バニラ素数。または2個以上の(必ずしも相異ならない)バニラ素数の積。

定理 あるバニラ自然数 n = pe が与えられたとき、それを2平方数の和として書き表す方法は、
  4(e + 1) 通り
ある。もし n が2種類のバニラ素数から成り n = peqf と書けるなら、この数は
  4(e + 1)(f + 1) 通り
となる。3種類以上のバニラ素数から成る場合も同様で、n = peqfrg… のとき、この数は
  4(e + 1)(f + 1)(g + 1)… 通り
となる。ここで p, q, r, … は相異なるバニラ素数。e, f, g, … は自然数。言い換えると、x2 + y2 = n の整数解 (x, y) は、上記の数だけある。ただし「x と −x の違い」「y と −y の違い」「足し算の順序の違い」を区別しないなら、解の個数は8分の1に減る(1未満の端数は切り上げ)。

解説 n = pe(つまり、バニラ素数 p の e 乗)について、x2 + y2 = n の整数解が
  4(e + 1) 個
あることは、前回、確かめた。上の定理は、n が2個以上の「バニラ素数のべき」の積であるときにも、同様の性質が成り立つ…という主張。例えば、
  n = 52 × 131 = 325
のとき、p = 5, e = 2, q = 13, f = 1 となり、上の定理によれば…
  x2 + y2 = 325 の解は
  4(e + 1)(f + 1) = 4(2 + 1)(1 + 1) = 24 個。
  ただし符号と足し算の順序を区別しなければ、その8分の1となり、3個。

〔注〕 具体的には:
  12 + 182 = 325
  62 + 172 = 325
  102 + 152 = 325
この3種の一つ一つについて、次のような左辺のバリエーションを考えられるので、厳密に細かく数えた解 (x, y) の個数は8倍ある。
  (±1)2 + (±18)2 あるいは (±18)2 + (±1)2 (複号任意)

自然数は、一般にはバニラ自然数とは限らず、バニラ素数以外の因子を含んでいる。だから「上記の定理は一般性がない」…と感じられるかもしれない。実は、バニラ素数以外の因子は、この問題の本質に影響しない――詳細は後述するが、バニラ以外の因子があっても、その「バニラ以外の因子」を無視した場合と解の個数は変わらないか、あるいは単に「解なし」となり、その判別法も簡単。従って、バニラ自然数の場合だけを扱う上記定理こそが、問題の核心なのだ!

【2】 定理の内容は少し複雑そうだが、具体例を観察すれば自然と「そうなって当然」と感じられる…。

バニラ素数 p = 5 をガウス整数の範囲で p = AB と分解しよう。例えば A = 2 + i として、その共役を B = 2 − i とする。次の関係に注意:
  norm(A) = p, norm(B) = p
  norm(A2) = norm(A) × norm(A) = p2
  norm(AB) = norm(A) × norm(B) = p2
  norm(B2) = norm(B) × norm(B) = p2
  より一般的に A or B を合計 e 個選んで掛け合わせると、その積のノルムは pe

同様に、バニラ素数 q = 13 をガウス整数の範囲で q = CD と分解しよう。例えば C = 3 + 2i として、その共役を D = 3 − 2i とする。
  C or D を合計 f 個選んで掛け合わせると、その積のノルムは qf

〔注〕 p = AB, q = CD のように、普通の素数が2個の(本質的に異なる)ガウス素数の積に分解することを split(スプリット)という。バニラ素数は、ガウス整数の世界において split する(split される)。

さて n = peqf として、
  x2 + y2 = n
の解を求めたい。いつものように norm(Z) = peqf を満たす Z を考えよう。まずノルムが pe になるガウス整数だが…
  □ + ○ = e ならば norm(AB) = pe なので*1
  □ = 0, 1, 2, …, e の e+1 通りの選択肢がある(□ を選べば、○ = e − □ は自動的に決まる)。

同様に、ノルムが qf になるガウス整数としては…
  ■ + ● = f ならば norm(CD) = qf なので*2
  ■ = 0, 1, 2, …, f の f+1 通りの選択肢がある(■ を選べば、● = f − ■ は自動的に決まる)。

*1 *2 この主張の逆は成り立たない。例えば A や B を同伴数(単数倍したもの)で置き換えれば、norm(☆) = pe を満たすような別の「☆」を作れる。じゃあ、選択肢はもっと増えるのか。その通り、「入り口」の選択肢は本当はもっと多い。だけど、単数倍の違いについて、いちいち因子ごとに考えるのは面倒くさい。「掛け算が終わってから、まとめて1回だけ考えれば同じこと」なので、そうしよう。

ノルム peqf のガウス整数を作るには、①ノルム pe のガウス整数 AB と、②ノルム qf のガウス整数 CD を、選んで掛け合わせるしかない(だって、基本性質として、素因数分解は本質的に一通りじゃん。例えば n = pe × qf になるんなら、それ以外の分解はない――単数倍の違い・掛け算の順序の違いを無視すれば)。①の □ には e+1 通りの選択肢がある。さらに、①の選択とは独立に(言い換えれば①の選択肢の一つ一つに対して)、②の ■ には f+1 通りの選択肢がある。だから、選択肢の組み合わせとしては:
  (e + 1)(f + 1)
さらに、単数倍も考慮すると…。一つ一つの□と■の選択について、ABCD には、
  ±(ABCD), ±i(ABCD)
の4種のバリエーションがあり(単数倍の関係の4種は、ノルムが同じ仲間同士だけど、数値としては異なるガウス整数)、norm(Z) = peqf を満たすガウス整数 Z の個数は、単数倍まで細かく区別すると、4倍に増える:
  4(e + 1)(f + 1)

これが「掛け算が終わってから、まとめて1回だけ考える」部分。選択肢を漏れなく数えたい一心で、「入り口」で因子ごとに4種類の単数倍を区別をすると、「4の指数乗」のものすごい勢いでパターンが増えてしまう。でも、単数は何乗しても単数。ガウス整数の世界では、4種類だけ――増殖するように見えても、4パターンが重複して現れるだけ。「入り口」では放置しておき「出口」で4倍すれば、全パターンを過不足なくカウントできる!

解の符号・足し算の順序を無視した場合、解の個数が(厳密に細かく数えた個数と比べて)8分の1に減る理由は…。符号の無視によって4分の1になり、足し算の順序の違いを区別しないこと(例えば 32 + 42 と 42 + 32、つまり解 (3, 4) と解 (4, 3) を一つと数えること)によって、さらに半分になるから!

対応するガウス整数で考えると…。単数倍の違いの無視で4分の1、共役の違いの無視でさらに2分の1。「共役が単数倍」のような特殊ケースでは少し変則的になるが、基本原理はそうなる。

【3】 以上の分析は p = 5, q = 13 という具体的な値とは、あまり関係ない。任意の(相異なる)バニラ素数 p, q について、同じことが言える。さらに、n = peqfrg… のように、3種類(あるいはそれ以上)のバニラ素数の「べき」についても同様の議論が成り立ち、そのとき選択肢(解の数)が
  4(e + 1)(f + 1)(g + 1)… 個
になるのは、明らかだろう。

これは、ガウス整数の世界においてバニラ素数はスプリットされるという性質――世界それ自体の構造についての性質――の現れなのだ。ある素数 p を「異なる2平方数」の和として
  p = a2 + b2
と書ければ、ガウス整数の世界において
  p = (a + bi)(a − bi)
とスプリットされるのだから、フェルマーのクリスマス定理が重大な意味を持つ!

フェルマー自身は、このことの深い意味には気付いてなかっただろう。

「意味は分からないけど、ここには重大な何かがあるぞ」と直感はしてただろう。

超人ガウスは、ついにこの構造を見抜いたが、1世代前のオイラーは「確かにそうなるのだが、その証明は容易ではない」と言葉を濁している。

われわれは今、偉大な先人たちに肩車してもらうことで、天才オイラーにすら見抜けなかったことを透明に見通している。現代の数学の中では小さなことかもしれない。だが、この風景の素晴らしさに気付く者は、初めて海を見た子どものように驚嘆するだろう。(続く

✿ ✿ ✿


2022-05-21 x² + y² = n の解の個数 Part 2 あんなの飾りです

ガンオタには「偉い人」の皮肉が分からんのですよ…

「偉い人」とは、作品世界内の「上層部」ではなく、機体の色・形状などに口出しをした揚げ句、打ち切りを決めてしまう「スポンサーサイド」ではないだろうか?

【4】 それはともかく x2 + y2 = n は整数解を持たないこともある。例えば、
  x2 + y2 = 3 とか x2 + y2 = 7
のように、n が「4で割って3余る素数」のときには、解がない(クリスマス定理)。

ここでは「4で割って3余る素数」をチョコレート素数と呼ぶことにする。

n の因子がバニラ素数だけなら、x2 + y2 = n が解を持つことは、既に確かめた。上記の通り、n がチョコレート素数なら、この方程式に解はない。じゃあ n として、バニラとチョコレートがミックスされてたら、どうなるだろうか。例えば
  x2 + y2 = 3 × 5 = 15
のように? ちょっと試行錯誤すると、この例も「解なし」であることが分かる。なぜこのパターンには、解がないのだろうか。ガウス整数の問題として考えると…

norm(Z) = n = pq を満たすガウス整数 Z がない理由は何か。ここで p はバニラ素数、q はチョコレート素数。

【5】 この問いに答えるため、ガウス素数はどんなノルムを持ち得るか考えてみよう。まず、ガウス素数 1 + i のノルムは 12 + 12 = 2 なので、ノルム2のガウス素数は存在する。

次に、p がバニラ素数のとき x2 + y2 = p は解を持つので、任意のバニラ素数 p について、ノルム p のガウス素数 x + yi が存在する。

〔注〕 ガウス整数 G = x + yi のノルムが素数なら、それ以上の分解は不可能なので、G はガウス素数。つまり「norm(G) が素数なら G はガウス素数」。

他方、q がチョコレート素数のとき x2 + y2 = q は解を持たない。だから、どんなチョコレート素数 q を考えても、ノルム q のガウス素数は存在しない。つまり、チョコレート素数 q 自身のノルムは…
  norm(q) = q2
…だけど、この q をガウス整数の範囲で q = AB と分解して
  norm(q) = norm(A) × norm(B), norm(A) = norm(B) = q
とするのは無理(ノルム q の A や B は存在しないのだから)。

従って、整数の世界のチョコレート素数 q は、ガウス整数の世界でも素数(分解不可能)。そして、そのノルムは q2

〔注〕 q 自体はガウス素数だが、そのノルム norm(q) = q2 は(普通の意味での)素数じゃない。G がガウス素数だからといって norm(G) が素数とは限らないのである。つまり「G はガウス素数だが norm(G) は合成数」というケースもある。

まとめると、ガウス素数のノルムは「2」「バニラ素数」「チョコレート素数の2乗」の三択になって、それ以外の選択肢はない!

この観察によれば、最初の疑問「norm(Z) = n = pq を満たす Z が存在しない理由」は単純明快。ガウス整数の世界で Z = ABCD などと素因数分解されたとしよう。すると
  norm(Z) = norm(A) norm(B) norm(C) norm(D)
だけど、この右辺の因子は「2」「バニラ素数」「チョコレート素数の2乗」のどれかに限られる。どう逆立ちしても、「チョコレート素数の1乗」である q という因子が単独で出てくることはない(q2 ならあり得るが、q1 は無理)。右辺の因子が何個あろうが(つまり Z が何個のガウス素数の積に分解されようが)、原理は同じ。

結論として、n の因子にチョコレート素数が1個だけ交じっているとき、x2 + y2 = n は「解なし」。

【6】 ではチョコレート素数の因子が交じっていたら、絶対「解なし」? いや、今の考察から分かるように、「チョコレート素数の2乗」なら、そういうノルムのガウス素数が存在する。ということは…。これについては、直接、普通の整数の世界で考えた方が分かりやすい。例えば、
  x2 + y2 = 5
の右辺はバニラ素数で、この方程式は 解 (x, y) = (2, 1) を持つ。
  22 + 12 = 4 + 1 = 5
その x, y をそれぞれ3倍した (6, 3) は、次の関係を満たす:
  (2⋅3)2 + (1⋅3)2 = 4⋅32 + 1⋅32 = 5⋅32 = 45
だから x2 + y2 = 45 は解を持ち、解の個数は、x2 + y2 = 5 の解の個数と同じ。

要するに n = 3 × 5 だと解なしだが、n = 32 × 5 なら解がある。

解と言っても、もともと成り立ってる式の両辺を 32 = 9 倍しただけ…もともとある解が、全部 3 倍されるだけ。つまらない話だ。この場合、チョコレート素数の2乗は、両辺を無意味に水増しするだけの「飾り」。

一般に、偶数の自然数 2k を考えると、x2 + y2 = n が解を持つなら、両辺を q2k 倍したもの(つまり x, y をそれぞれ qk 倍したもの)も、解を持つ。一方、両辺を「q の奇数乗」倍した場合、q がチョコレート素数なら、前記 q1 のケースと同様、解なし。解に対応するガウス整数 Z について、norm(Z) の素因子は「2」「バニラ素数」「チョコレート素数の2乗」のどれかにならねばならず、そのような素因子をどう掛け合わせても「チョコレート素数の奇数乗」を作れないから。

【7】 V をバニラ自然数とするとき、
  x2 + y2 = V 「♪」
に解があることも、解の正確な個数も、分かっている(前回参照)。【6】と同様に考えると、「♪」の右辺にチョコレート素数の因子 q, r, s, … が1個以上加わって
  x2 + y2 = Vqfrgsh
のようになった場合、その式を満たす解 (x, y) の個数は、
  指数 f, g, h, … が全部偶数なら「♪」の解の個数と同じだが、
  指数に1個でも奇数が交じっていたら「解なし」。
ここで q, r, s, … は相異なるチョコレート素数、f, g, h, … は自然数。

「指数が全部偶数」の場合の解というのは、「♪」の解を qf/2rg/2sh/2… 倍しただけ(f などは偶数と仮定してるので、2で割り切れる)。

〔結論〕 n にチョコレート素数の因子があっても、x2 + y2 = n の解の個数は、その「チョコレート素数の因子」を無視した場合と変わらないか(因子が偶数乗だけの場合)、あるいは、単に「解なし」となる(因子に奇数乗が含まれる場合)。「解の個数」を問題にする場合、チョコレート素数は、問題の本質とは関係ない: 「解の個数」ではなく「解の有無」に関係している(1個でも奇数乗があれば解はなく、偶数乗だけなら解はある)。

でも「チョコレート素数は、そういう性質の存在だ」という抽象的事実それ自体は、興味深い!

ガウス整数の世界では、バニラ素数はもはや素数でなく、2個の破片に split される。一方、チョコレート素数は、何の“反応”も起こさず、素数のまま「停滞」する。この性質は inert(イナート)という形容詞で表現される。ニュアンス的には「不活性」だけど、日本語では「惰性」と呼ばれるらしい…何かだせぇ(おやじギャグw)。(続く

✿ ✿ ✿


2022-05-28 x² + y² = n の解の個数 Part 3 「ラミファイド」の謎

前回までの粗筋

17世紀フランス…。ピエール・ド・フェルマーは、72 + 242 と 152 + 202 がどちらも 252 に等しいことに気き、一体 x2 + y2 = n には何個の整数解があるのだろう、と好奇心を抱いた。彼は正しい答えを得たが、その答えの背後に隠された意味には気付かなかった!

約200年後…。ドイツの天才ガウスは「これは整数解を求める問題だが、虚数の世界の話なのだ」と見抜き、複素数の海へと乗り出した。

☆☆☆

【8】 x2 + y2 = 25 を満たす整数 (x, y) は、細かく数えると12組:
  02 + 52 = 25, 32 + 42 = 25, etc.
x2 + y2 = 65 を満たす整数は、16組。
  12 + 82 = 65, 42 + 72 = 65, etc.
ただし x, y の符号や足し算の順序を区別しなければ、8分の1になる(1未満の端数は切り上げ)。

x2 + y2 = n の解の個数は、n の素因数分解によって定まる。もし
  n = peqfrg…AαBβCγ
ならば、4(e + 1)(f + 1)(g + 1)… 個の解がある。ただし α, β, γ は全部偶数でなければならず、一つでも奇数があれば、解はない。ここで p, q, r, … は相異なるバニラ素数、A, B, C, … は相異なるチョコレート素数。

x2 + y2 = 25 の例では
  n = 52
なので(e = 2)、解の個数は 4(2 + 1) = 12。x2 + y2 = 65 の例では
  n = 51131
なので(e = 1, f = 1)、解の個数は 4(1 + 1)(1 + 1) = 16。

これで問題は、ほとんど解決した…。n を素因数分解して、チョコレート素数の奇数乗が含まれてないことを確認した上で(もし含まれていたら解はない)、後はバニラ素数の各指数に 1 を足したものを掛け合わせて、4倍すればいいのだ。

だがちょっとだけ、やり残したことがある。n が偶数で、素因数分解に 2 や 22 や 23 などが含まれていたら、どうなるのか。2 はバニラ素数(4で割って余り1)でも、チョコレート素数(4で割って余り3)でもないので、上記のパターンに当てはめることができない。

【9】 2 = 12 − i2 = (1 + i)(1 − i) はガウス整数の世界では分解されるので、バニラ素数と同じ振る舞いをするようにも思える。だとすると、2 の指数は、上の公式の e や f と同様の働きをして、x2 + y2 = 50 は24個の解を持ち、x2 + y2 = 100 は36個を解を持つはず。だが、数値的に試すと、
  12 + 72 = 50, 52 + 52 = 50, etc.
あるいは
  02 + 102 = 100, 62 + 82 = 100, etc.
などが見つかるだけで、x2 + y2 = 25 と比べて解の個数は変わらない。n を2倍、4倍、8倍…しても解の個数には影響しないようだ。

「解の個数とは関係ない」のなら、計算上は「無視すればいい」だけだが、理論的な謎が残る。

バニラ素数 v がガウス整数の世界で v = PQ と分解されるなら、norm(P) と norm(Q) は、どちらも v に等しい。もし n = 25 のように v2 = (PQ)2 の形になっていれば、norm(Z) = v2 を満たす Z は P2, PQ, Q2 の3通り。もし v3 = (PQ)3 なら P3, P2Q, PQ2, Q3 の4通りだ。つまり、あるバニラ素数の指数が1, 2, 3, …と増えるごとに、ガウス整数の世界では 2, 3, 4, …種類の積のバリエーションが生まれ、それに対応して、普通の整数の世界では、解のパターンの数が、2倍、3倍、4倍…になる。因子に2種類以上のバニラ素数があるときは、確かにそうなっていた。

ではなぜ、
  【ア】 2 = PQ, P = 1 + i, Q = 1 − i
の分解は、同じ原理に従わないのか?
  【イ】 5 = PQ, P = 2 + i, Q = 2 − i
  【ウ】 13 = PQ, P = 3 + 2i, Q = 3 − 2i
のような分解と、本質的に何の違いがあるというのだろう?

【10】 逆に問おう。例えば【イ】の P = 2 + i と Q = 2 − i は、なぜ別の解に対応するのか。「P と Q が本質的に違うから、対応する解 22 + 12 = 5 と 22 + (−1)2 = 5 は本質的に違う」という説明は、表面的にはピンとこない点もある。だってこれら2種類の解は、(±1)2 の符号が違うだけで、「実質同じじゃん」と思える。とはいえ PP = 3 + 4i に対応する 32 + 42 = 25 と、PQ = 5 + 0i に対応する 52 + 02 = 25 は、別々の2解と見るべきだろう。ましてや PPP = 2 + 11i に対応する 22 + 112 = 125 と、PPQ = 10 + 5i に対応する 102 + 52 = 125 は、本質的に違う2解だ。やはり P と Q には「多様性の芽」がある。P を Q に置き換えることで、本質的に違うガウス整数となり、それに対応して「新しい解」が生まれる…。

「本質的に違う」とは、「単数倍の違いではない」ということだった。ガウス整数の世界における「単数倍の違い」は、複素平面上で、原点を中心に0°・90°・180°・270°回転させた位置にある4種類の数の関係。P = 2 + i で言えば、それは P 自身と iP と −P と −iP の4種類で、それぞれ
  P = 2 + i ⇒ 対応する解 22 + 12 = 5
  iP = −1 + 2i ⇒ 対応する解 (−1)2 + 22 = 5
  −P = −2 − i ⇒ 対応する解 (−2)2 + (−1)2 = 5
  −iP = 1 − 2i ⇒ 対応する解 12 + (−2)2 = 5
となる。一方、Q = 2 − i から同様に生まれる4種類の解については、似ているようだが違う。感覚的には紛らわしいかもしれないが、上記4種類と、下記4種類を、区別して考える必要があるのだ。
  Q = 2 − i ⇒ 対応する解 22 + (−1)2 = 5
  iQ = 1 + 2i ⇒ 対応する解 12 + 22 = 5
  −Q = −2 + i ⇒ 対応する解 (−2)2 + 12 = 5
  −iQ = −1 − 2i ⇒ 対応する解 (−1)2 + (−2)2 = 5

「これらは、符号が微妙に違うだけ。まとめて1回だけカウントして、後から8倍しときゃいいのでは?」と思いたくなるけれど…

例えば x2 + y2 = 25 を満たす整数 (x, y) は、細かく数えると12組。12は8の倍数ではない。「大ざっぱに数えて8倍する」という方法では、解の個数を厳密に追跡できないケースがある。「8個ずつまとめて数える」、つまり
  (±a, ±b), (±b, ±a)
の形の8種類の解をまとめて数えて、何がいけないのか? a = 0 のとき「±a」を2種類と考えると、全く同じものが重複カウントされて、正確な解の個数が分からなること。b = 0 のときの「±b」についても同じ問題がある。さらに a = b のときも「a と b のどっちを前にしても同じ」なので、重複カウントが発生する。

「8種類ずつまとめて数える。ただし a = 0 または b = 0 または a = b のときは4種類ずつまとめて数える」とすればいいのかもしれないが、それだと「ただし」の条件が複雑で、見通しが悪い。8個ずつまとめて数えようと欲張らず、「単数倍の違いだけを無視して、一律に4個ずつ数える」ことにすれば、話がシンプルになり、見通しが良くなる。

P の単数倍と Q の単数倍が似ているのは、P と Q が共役だから。けれど、一般に、共役の関係は単数倍の関係ではないので、P と Q をそれぞれ0°・90°・180°・270°回転させても、どこかで重なるということはない。

【11】 この流れで考えると、
  2 = PQ, P = 1 + i, Q = 1 − i
の P と Q が他と違う理由が見えてくる。この P と Q は共役というだけでなく、同時に P = iQ という単数倍の関係になっている(あるいは、同じことだが −iP = Q)。単数倍の違いは「最後にまとめて4倍」によって吸収されてしまうので、この場合に限っては、P と Q の違いは「新しい解を発生させるような芽」にならない。2 = (1 + i)(1 − i) という分解が、5 = (2 + i)(2 − i) などの分解と違うのは、そのため。

「共役」と「単数倍」は別々の概念。一般には、両者は無関係。しかし「共役かどうか」と「単数倍かどうか」が無関係であるからこそ、「共役のものが、たまたま単数倍でもある」という現象が起こり得る。

例えば x2 + y2 = 25 を解くために 5 = PQ, P = 2 + i, Q = 2 − i を使って norm(Z) = 52 を満たす Z を探すと、単数倍の違いを無視して
  【カ】 PP = 3 + 4i, PQ = 5 + 0i, QQ = 3 − 4i
の3種類が見つかる。もちろん 32 + 42 = 25, 52 + 02 = 25 などの解に対応している。さて x2 + y2 = 100 = 22⋅52 を解くために 2 = RS, R = 1 + i, S = 1 − i を併用して norm(Z) = 22⋅52 を満たす Z を探すと…。単純に考えると、【カ】の3パターンの一つ一つに対して RR 倍、RS 倍、SS 倍の3種類が該当するので、トータルで(単数倍の違いを無視して)9パターンあるように思える:
  【キ】 PP × RR = −8 + 6i, PP × RS = 6 + 8i, PP × SS = 8 − 6i
  【ク】 PQ × RR = 0 + 10i, PQ × RS = 10 + 0i, PQ × SS = 0 − 10i
  【ケ】 QQ × RR = 8 + 6i, QQ × RS = 6 − 8i, QQ × SS = −8 − 6i
だがしかし、R と S は互いに単数倍――「単数倍の違いを無視して」と言うなら R と S の違いは無視され、RR と RS と SS の違いも無視されねばならない。【キ】の3パターンは実際には1パターンにすぎず、【ク】の3パターンも実際には1パターンにすぎず、【ケ】の3パターンも実際には1パターンにすぎない。要するに【カ】の3種類と比べて、パターンは全然増えてない!

RR = 2i を掛けた場合と、SS = −2i を掛けた場合を比べると、積は −1 倍の違いにすぎず、つまり単数倍の違い。同様に RS = 2 を掛けた場合と比べると、RR を掛けた場合・SSを掛けた場合の積は ±i 倍であり、単数倍の違い。単数倍の違いを無視したいなら、これら3つを別々にカウントしてはいけない

因子 2 が3個以上あっても同様で、例えば RRR, RRS, RSS, SSS の4つは、単数倍の違いを無視すると同一パターンにすぎない。任意の自然数 n の素因数分解は、素因数 2 のべき 2d を含めて、
  n = 2dpeqfrg…AαBβCγ
と書けるが、解の個数に影響するのはバニラ素数の肩に乗る指数 e, f, g, … だけで、2d の部分は、解の個数とは無関係なのだ。一方、チョコレート素数の肩に乗る指数 α, β, γ, … は解の「有無」に影響するのだった。

まとめると…

定理 n を正の整数、p, q, r, … を相異なるバニラ素数、A, B, C, … を相異なるチョコレート素数とする。x2 + y2 = n = 2dpeqfrg…AαBβCγ… は、もし α, β, γ, … の中に奇数が1つもないなら(そして、そのときに限って)、解を持つ。その場合、解の個数は:
  4(e + 1)(f + 1)(g + 1)…

「ガウス整数の範囲で分解可能」という点では、2 は、チョコレート素数よりバニラ素数に近い。チョコレート素数は一つでも奇数乗があると「解なし」になってしまうが、バニラ素数の場合、偶数乗でも奇数乗でも「解なし」にはならない――素数 2 も同じ性質を持つ: n の因子として 2 の何乗が含まれていようがいまいが、解の有無には影響しない。一方、バニラ素数の場合、種類が多ければ多いほど(そして指数が大きければ大きいほど)、解の個数が増えるけど、素数 2 には、この性質はない。2 の何乗が含まれていようがいまいが、解の個数は増えも減りもしない!

注記1 この定理は n = 20 (=1), 21 (=2), 22 (=4), 23 (=8) などの場合、つまり e = f = … = 0 の場合にも成り立つ。その場合、解の個数は:
  4(0 + 1)(0 + 1)(0 + 1)… = 4
例えば n = 1 のとき、細かく数えると、次の4種類の解がある:
  12 + 02, (−1)2 + 02, 02 + 12, 02 + (−1)2
n = 2 なら (±1)2 + (±1)2 の4種類の解があり、n = 4 なら (±2)2 + 02, 0 + (±2)2 の4種類の解がある(複号の組み合わせは任意)。一般に n = 2d のとき、d が偶数なら2平方数 2d, 02 から、d が奇数なら2平方数 2d−1, 2d−1 から、それぞれ4種類の解が生じる。このような n がチョコレート自然数の平方倍されても、解の個数は変わらない。例えば 2d が 32 倍、72 倍、212 倍されるなら、4種類の解の値はそれぞれ 3 倍、7倍、21倍される: 9 = (±3)2 + 0 = 0 + (±3)2, 18 = (±3)2 + (±3)2 等々。

注記2 定理の範囲外だが、もしも n = 0 なら 02 + 02 という1種類の自明解しかなく、n が負なら(平方数の和は負にならないので)解はない。

【12】 2 = PQ, P = 1 + i, Q = 1 − i のように、ガウス整数として分解したとき、因子 P, Q が単数倍の関係になるのなら、単数倍の違いを無視すれば 2 は P2 の形で書ける(あるいは、同じことだが、Q2 の形で書ける): 2 = −iP2 −i(1 + i)2 あるいは 2 = iQ2 = i(1 − i)2

普通の意味での素数 z が z = PQ とガウス素数の積に分解される場合、「z は split する(split される)」と表現されるのだった――正確には、この用語は、P と Q が単数倍の関係ではない場合を指す。もし P と Q が単数倍の関係なら(つまり u を単数として Q = uP, z = PQ = uP2 と書ける場合)、「z は ramify される」と表現される。Ramify は、平方因子を含む分解に他ならない。

z = PQ が ramify される条件、つまり共役ペア P = a + bi と Q = a − bi が互いに単数倍になる条件は何だろうか(a, b は普通の整数)。

まず、単数倍といっても P = Q や P = −Q の可能性はない。

P = a + bi と Q = a − bi が等しくなるには b = 0 が必要。P と −Q = −a + bi が等しくなるには a = 0 が必要。ところが、もしも a = 0 なら P = bi, Q = −bi, z = PQ = (bi)(−bi) = b2 となり、これは「z が(普通の意味での)素数」という仮定に反する。同様に b = 0 も不可能。

従って、ガウス整数の世界で z が ramify されるとすれば、P = iQ or −iQ となる必要があり(単数倍のうち ±1 倍の可能性はないので)、それは a = b or −b の場合。そのとき z = norm(P) = a2 + b2 = 2a2 は偶数だが、これが素数になるのは a = 1 のときに限られる。要するに、ガウス整数の世界で ramify が起きるのは、z = 2 の場合だけ。

Ramify される(ramified)というのは、素数 z 自身の性質ではなく、「どの世界で考えるか」によって決まる性質。ガウス整数だけ見ていると「2 は他の素数と違って偶数だから、特殊なんだろう」という気がするかもしれないが、そういう問題じゃぁない。アイゼンシュタイン整数の世界では 2 は ramify されず、 3 が ramify される:
  3 = −ω(2 + ω)2 別の書き方をすると 3 = −ω2(1 − ω)2

普通の素数が「より広い世界」では分解可能になることは、それほど驚くべきことでもないだろう。けれど、分解の仕方に「平方因子のある分解」(ラミファイド)と「平方因子のない分解」(スプリット)があって、その抽象的な区別が「普通の整数の範囲での x2 + y2 = n の解の個数」のような身近な算数に、はっきりと分かる影響を及ぼす。何と精妙なのだろう! (第2部・完)

✿ ✿ ✿ ✿ ✿

遊びの数論5』へ続く。

<メールアドレス>