「チラ裏」は、きちんとまとまった記事ではなく、断片的なメモです。誤字脱字・間違いがあるかもしれません。
2022-04-15 目で見るアイゼンシュタイン整数 鉄石整数
2022-04-16 目で見るアイゼンシュタイン整数(その2) やつは単位円の上にいる
Gotthold Eisenstein 生誕199年・記念日(1823年4月16日生まれ)
美しい「アイゼンシュタイン素数の地図」。
Oliver Knill (Harvard University, Department of Mathematics) による。
【1】 ω2 = −1 − ω のような式は、それだけ見るとピンとこないが、ω が単位円上の偏角120°の点であることを念頭に置くと、ω2 が240°の点であること、そしてそれが −1 − ω に等しいことは、作図から明らかだろう。というのも、0→1 を裏返した −1 のベクトルと、ω を裏返した −ω のベクトルを考えると、ベクトルの和を表すひし形の頂点は、図の水色の線上の青丸の位置。
【2】 ω は1の原始3乗根なので、x3 = 1 の解、言い換えれば
x3 − 1 = 0
の解。x = 1 も、この方程式の一つの解なので、上の左辺は x − 1 で割り切れる。筆算すると…
この割り算(多項式の因数分解)を使うと:
3次方程式 x3 − 1 = (x − 1)(x2 + x + 1) = 0 の残りの2解は
2次方程式 x2 + x + 1 = 0 の解
つまり x = (−1 ± √−3) / 2 = −½ ± (√3/2)i (☆)
作図から ω の虚部は正なので ω = −½ + (√3/2)i = (−1 + √−3) / 2。一方、(☆)の複号でマイナスを選ぶと、ω の共役複素数が得られる: 作図からも数値からも、それは【1】の ω2 = −1 − ω に等しい。
実際 ω = (−1 + √−3) / 2 を平方すると、分母は 4、分子は
(−1)2 + 2(−1)√−3 + (√−3)2 = 1 − 2√−3 − 3 = −2 − 2√−3、
つまり ω2 = (−2 − 2√−3) / 4 = (−1 − √−3) / 2
この最後の数は −1 = (−2)/2 と −ω = (1 − √−3) / 2 の和に等しい。
<別解> 単位円上の点であり、三角関数を使えば ω = cos (2π/3) + i sin (2π/3)
【3】 計算自体は単純だし、教科書に書かれているこれらの事柄を丸暗記することは簡単だが、ここで感覚的にいろいろ疑問が生じる。まず、ガウス整数の i の代わりに別の複素数を使って新世界を構築するのは大いに結構だが、整域の分際で ½ とは何事か。「○○整数」というからには、座標に ½ の端数があるような点なんかを仲間に入れず j = √−3 あたりを基本単位にした方がいいのでは…?
それとは別方向の疑問として、「単位円を6等分した6カ所」が単数になるのだから(これについては後述)、3等分の ω の点ではなく、6等分の点(図の 1 + ω)、つまり −1 の原始3乗根(1 の原始6乗根)を基本単位にする方が、筋が通っているのでは…?
ガウス整数の場合、4等分の点を i を生成元として、4種類の単数 i1, i2, i3, i4 が生成された。アイゼンシュタイン整数の場合、基本となる ω のべきの形で単数が勢ぞろいせず、何となくスッキリしない。
第1の疑問だが、そうしたければ、j = √−3 を基本単位にしても、それなりの代数構造が成り立つけれど、「少し不思議 パラレルワールド」で紹介したように、その世界では、一意分解が成り立たない(従って、ましてやユークリッド整域ではない)。応用上、これは痛い…というか不便。「実部」と「虚部の √3」が、同時に ½ の端数を持つことを許すことで、少し世界が広がりユークリッド整域になる。普通の整数に j = √−3 を追加したパラレルワールドは「アイゼンシュタイン整数の世界(それはユークリッド整域である)」の真部分集合で(図解)、それなりの応用もあるのだが…。一般論としては、狭苦しい部分集合の中で考えるより、このユークリッド整域全体を舞台とした方が、便利で見通しがいい(最初は、ガチガチな理論的なことより、単に「その方が実用上便利だから」という方が納得しやすいだろう)。
第2の疑問は全く別の話。教科書通りに「1の原始3乗根」を ω としても、反体制的(?)に「−1 の原始3乗根」を ω としても、対称性から、同じ構造の世界が得られる(原点が正六角形で囲まれているので、60°の回転では「世界の形」は変わらない)。だから、本質的にはどっちでもよく、むしろ後者の定義の方が、式が少しきれいになる。けれど、ここでは、他の文献と見比べやすいように、素直に「普通の定義」を受け入れておこう!
2022-04-17 アイゼンシュタイン整数(その3) 新しい世界
【1】 x, y を任意の(普通の)整数として、x + yω の形の数をアイゼンシュタイン整数と呼ぶ。
任意の2個のアイゼンシュタイン整数 s = a + bω, t = c + dω について、それらの和
s + t = (a + c) + (b + d)ω ‥‥「あ」
は、再びアイゼンシュタイン整数。というのも、(a + c) と (b + d) は普通の整数同士の和なので、普通の整数。それらをそれぞれ x, y とすると、「あ」の数は、アイゼンシュタイン整数の定義を満たす。
積についても同様。
st = (a + bω)(c + dω) = ac + (ad + bc)ω + bdω2 ‥‥「い」
ここで ω2 = −1 − ω を使うと
「い」 = ac + (ad + bc)ω + bd(−1 − ω) = (ac − bd) + (ad + bc − bd)ω ‥‥「う」
この (ac − bd) と (ad + bc − bd) は、どちらも普通の整数。
任意のアイゼンシュタイン整数 s = a + bω について、−s = (−a) + (−b)ω も、アイゼンシュタイン整数(なぜなら −a と −b は普通の整数)。
アイゼンシュタイン整数の世界は 0 = 0 + 0ω と 1 = 1 + 0ω を含む。
アイゼンシュタイン整数の世界は、複素数全体の集合の部分集合なので、いろいろな点で、複素数の世界の性質を受け継ぐ: 足し算と掛け算の結合法則・交換法則、そして分配法則が成り立ち、零因子がない。
以上によって、この世界は整域である!
短期目標としては、この世界がユークリッド整域であることを示して、この新しい世界で素因数分解をしたり、素数表を作ったりして、遊んでみたい…。
【2】 ユークリッド整域のサイズの尺度(何?)として、ノルムを定義しよう。ガウス整数の場合と同じく、アイゼンシュタイン整数 s について、
norm(s) = s conj(s)
つまり「s のノルムは、s とその共役複素数の積に等しい」
…と定義すると、都合がいい(その幾何学的意味については次回)。
具体的に s = a + bω = a + b(−1 + √−3)/2
= (a − b/2) + (b√3/2)i
の共役複素数は、虚部の符号を反転させて:
conj(s) = (a − b/2) − (b√3/2)i
だから norm(s) = [(a − b/2) + (b√3/2)i][(a − b/2) − (b√3/2)i]
= (a − b/2)2 − [(b√3/2)i]2 ← なぜ?
= a2 − ab + b2/4 − [(3b2/4)(−1)]
= a2 − ab + b2/4 + 3b2/4 = a2 − ab + b2
ガウス整数の場合、「積のノルムはノルムの積」(15.)という性質が威力を発揮した。アイゼンシュタインの場合にも(より一般的に、共役との積としてノルムを定義するなら)、同じ性質が成り立つ。なぜなら、積の共役は共役の積だから(21. 補題2)。
共役複素数というのは、絶対値が同じで偏角の符号だけが逆のペアとも解釈できる。α と β を0以外の複素数とすると…
αβ は、偏角が arg(α) + arg(β) で絶対値が |α||β|
conj(α) conj(β) は、偏角が −arg(α) + (−arg(β)) で絶対値が |−α||−β| = |α||β|
…なのだから、αβ と conj(α) conj(β) は、絶対値が同じで偏角の符号だけが逆。つまり、共役になる。α または β が 0 のときは、偏角が定義されないものの、積 αβ は 0、共役同士の積も 0。0 と 0 も共役には変わりない。実部が同じで、虚部の符号が反対(+0 vs. −0)なので。
さて、アイゼンシュタイン整数の場合、
norm(s) = s conj(s) と norm(t) = t conj(t) の積は s conj(s) t conj(t)
それは、次と等しい:
norm(st) = st conj(st) = st conj(s) conj(t) [←なぜなら積の共役=共役の積]
【3】 念のため、確認を兼ねて(半分遊びで)、直接計算してみよう。
s = a + bω, t = c + dω のとき:
norm(s) = a2 + b2 − ab ‥‥「か」
norm(t) = c2 + d2 − cd ‥‥「き」
a2 + b2 だけなら、ガウス整数のノルムとそっくりだが、アイゼンシュタインの場合 −ab という3個目の項が追加される。ともあれ、
「う」から st = (ac − bd) + (ad + bc − bd)ω なので
norm(st) =
(ac − bd)2 + (ad + bc − bd)2 − (ac − bd)(ad + bc − bd) ‥‥「く」
これが「か」と「き」の積に等しいことを示したい。展開してガリガリ計算すればできるだろうけど、面倒そうだ。【2】の末尾のように考えた方が、簡単で見通しがいい。だけど、まぁやってみよう。「か」と「き」の積をばか正直に計算すると:
a2c2 + a2d2 − a2cd
+ b2c2 + b2d2 − b2cd
− abc2 − abd2 + abcd ‥‥「け」
「く」も、ばか正直に展開できるが、第3項の頭のマイナスが、符号ミスを誘発しそう。ここでは、次のように (ac − bd) から −1 をくくり出し、項全体の符号をプラスにしてから展開してみる:
(ac − bd)2 + (ad + bc − bd)2 + (−ac + bd)(ad + bc − bd)
= a2c2 + b2d2 − 2abcd
+ a2d2 + b2c2 + b2d2 + 2abcd − 2b2cd − 2abd2
− a2cd − abc2 + abcd + abd2 + b2cd − b2d2
整理すると:
= a2c2 + b2d2 + abcd
+ a2d2 + b2c2 − b2cd − abd2
− a2cd − abc2 ‥‥「こ」
「け」「こ」はどちらも9項で、確かに等しい!
「く」第2項の「3項式の平方」については、次の公式を使った:
(A + B + C)2 = (A + B + C)(A + B + C)
= AA + AB + AC + BA + BB + BC + CA + CB + CC
= A2 + B2 + C2 + 2AB + 2BC + 2CA
この計算は、あくまで遊び。【2】のように考えれば、こんなゴチャゴチャした議論は必要ない。いずれにせよ、重要なのは、このノルムをツールとして、アイゼンシュタイン整数の世界を探検すること。焦らず一歩一歩、進んでいきたい…。
2022-04-19 目で見るアイゼンシュタイン整数(その4) x + yi の形では
【1】 a + bω は、普通の複素数の形 x + yi としてはどうなるか? 画像で見比べてみる。
今 −3 の平方根を j とすると、アイゼンシュタイン整数は x + yj の形を持つが、ガウス整数 x + yi と違い、x と y は(普通の)整数とは限らない。仮に x と y を整数に限ると、それらは、下の画像の赤い点に当たる。これらもアイゼンシュタイン整数には違いなのだが、それがアイゼンシュタイン整数の全てではなく、ピンクの点もアイゼンシュタイン整数!
どういうことか?
例えば、基本となる ω は、(−½) + (½)j に当たる。言い換えれば、前回計算したように、(−1 + i√3)/2。作図から明らかなように、アイゼンシュタイン整数は「敷き詰めた正三角形タイルの頂点」に当たり、x-座標に½の端数があっても構わない(ピンクの縦線)――もし y-座標にも ½ 単位の端数があるのならば(ピンクの横線)。ここでは、y-座標の単位を j の赤線、つまり虚数方向の √3 と考えている。
1 + ω のピンクの点は (½) + (½)j だし、その右隣の 2 + ω は (3/2) + (½)j。このピンクの横線に関して言えば、次のような点がアイゼンシュタイン整数に当たる:
…, −2.5 + 0.5j, −1.5 + 0.5j, −0.5 + 0.5j, 0.5 + 0.5j, 1.5 + 0.5j, 2.5 + 0.5j, …
「0.5の端数OKなら、ケチケチせずに −2 + 0.5j, −1 + 0.5j, 1 + 0.5j, 2 + 0.5j, … も要素にしちまえば?」というのは、自然な疑問だろう。「x-座標、y-座標同時に端数がある場合に限って、0.5の端数OK」というのは、むしろ不自然なルールに思える。けれど、そういう寛大な態度だと 0.5 = 0.5 + 0j も仲間になってしまう。すると、この世界で掛け算ができるためには 0.5 × 0.5 = 0.25 も仲間にしなければならず、0.25 を仲間にしたからには 0.25 × 0.5 = 0.125 も仲間にしなければならず…となって、整数のパラレルワールドというより、有理数のパラレルワールドになってしまう。それではまずい、というのは、本能的に感じられるだろう。面白いのは、「x, y 両方同時になら、0.5の端数があっても、その相互作用によって 0.25, 0.125 などがわらわら発生しない」という部分にある。
【2】 a + bω と x + yj の関係。ω の定義から:
a + bω = a + b(−1 + j)/2 = (a − b/2) + (b/2)j ‥‥「さ」
同様に:
c + dω = (c − d/2) + (d/2)j ‥‥「し」
「さ」と「し」の積が再びアイゼンシュタイン整数になることは、前回(左辺同士の積について)直接確かめてあるが、½ の掛け算で ¼ が発生してこないのは、なぜか。「さ」と「し」の右辺同士を直接掛け算してみる:
[(a − b/2) + (b/2)j][(c − d/2) + (d/2)j]
= (a − b/2)(c − d/2) + (a − b/2)(d/2)j
+ (b/2)j(c − d/2) + (b/2)j(d/2)j
= ac − ad/2 − bc/2 + bd/4 + (ad/2 − bd/4)j
+ (bc/2 − bd/4)j + (−3bd/4) ←なぜなら j2 = −3
= ac − ad/2 − bc/2 − 2bd/4 + (ad/2 − 2bd/4)j + (bc/2)j
= (ac − ad/2 − bc/2 − bd/2) + (ad/2 − bd/2 + bc/2)j ‥‥「す」
確かに計算途中では ¼ が発生するものの、実部・虚部いずれでも、bd の「4分の奇数」倍が2個ずつ発生するため、それらの和は「4分の偶数」倍になって、分母分子を2で約分でき、「2分の整数」倍に戻る!
でも、こんなゴチャゴチャした計算、本当に正しいのだろうか…。前回の「う」によれば:
(a + bω)(c + dω) = (ac − bd) + (ad + bc − bd)ω
この右辺に「さ」の関係 A + Bω = (A − B/2) + (B/2)j を適用すると:
= [(ac − bd) − (ad + bc − bd)/2] + [(ad + bc − bd)/2]j
= (ac − bd/2 − ad/2 − bc/2) + (ad/2 + bc/2 − bd/2)j ‥‥「せ」
「す」と「せ」は確かに等しい。計算ミスはないようだ。
【3】 前回 a + bω のノルムを a2 − ab + b2 と定義したが、その幾何学的意味を明らかにしなかった。j = (√3)i なので「さ」によって:
この右辺の絶対値の2乗(言い換えれば、原点からこの点までの距離の2乗)は:
これってノルムじゃん!
ガウス整数の世界と同じで、アイゼンシュタイン整数の世界でも、ノルムは絶対値の2乗だと判明した。急にもやが晴れたような感じ。ガウス整数のときと同様、幾何学的解釈によって互除法が成り立つことを示せれば、この整域がユークリッドであることを証明できそうな予感がしてくる。
積の絶対値は絶対値の積なので、ノルムが乗法的関数になるのは(前回、ゴチャゴチャ議論したけど)、もはや論をまたない。
ところで、A + Bω = X + Yj と書き直すと、「さ」から
X = A − B/2, Y = B/2
逆に A = X + Y, B = 2Y
従って:
conj(a + bω) = conj((a − b/2) + (b/2)j)
= (a − b/2) − (b/2)j ←共役の定義(虚部の符号を反転)
= (a − b/2) + (−b/2)j ←ここで X = a − b/2, Y = −b/2 と見ると…
= (a − b) − bω ‥‥「そ」
【4】 アイゼンシュタイン整数の虚数の単位が j であること自体、ある意味、恣意的(しいてき=勝手に決めてる)。ガウス整数の世界(それは −1 の平方根 i を含む)のパラレルワールドを考えたいなら、−2 の平方根を k とでもして、x + yk の世界を考えるのも、自然な拡張ではないか…。普通の整数に「1 の原始4乗根」を加えたガウス整数と、「1 の原始3乗根」を加えたアイゼンシュタイン整数は、確かに姉妹のような感じだけど、−2 の平方根を加えたさらなるパラレルワールドも、いつか探検しなければなるまい。そしてもちろん「1 の原始5乗根」「原始8乗根」等々を加えると何が起きるのか…というのも、興味津々。
だが今は、アイゼンシュタイン整数の世界の探検を続けよう!
2022-04-21 アイゼンシュタイン整数(その5) 宝の地図の解読
【1】 アイゼンシュタイン素数の地図のうち、最も分かりやすい部分は、正の実数軸の上にある点だろう。普通の素数の 2, 5, 11 は、アイゼンシュタイン整数としても素数であることが読み取れる。
この地図が正しいとすると、普通の素数のうち、3 や 7 は、アイゼンシュタイン整数としては素数ではないらしい…。
ガウス整数での経験を振り返ると: ガウス整数 g のノルムが(普通の)素数であることは、g が素数であることの十分条件だが、必要条件ではなかった。具体的に、4で割って3余る素数(例えば p = 11)は、ガウス整数としても素数。
このとき、p の絶対値はもちろん p なので、そのノルム(すなわち絶対値の2乗)は p2。p は素数だが、norm(p) は素数ではない!
ガウス素数であることの必要十分条件について、まだ追究してなかった。アイゼンシュタイン素数の場合と対照させながら、両方とも考えてみたい。
【2】 アイゼンシュタイン整数の場合でも、ノルムが(普通の)素数になれば、それ以上分解できないので、当然アイゼンシュタイン素数。この点はガウス整数と変わりない。さらに、普通の整数は、アイゼンシュタイン整数の特別な場合なので、普通の整数の範囲で合成数なら、当然、アイゼンシュタイン整数の範囲でも分解可能。差し当たり問題となるのは「普通の素数のうち、アイゼンシュタイン整数としても素数であるものと、そうでないものの区別」。
アイゼンシュタイン整数 a + bω のノルムは
a2 − ab + b2
なので、アイゼンシュタイン整数 2 = 2 + 0ω のノルムは
22 − 2⋅0 + 02 = 4
であり合成数。地図が正しければ、「合成数のノルムを持つアイゼンシュタイン素数」の例となる。
検証してみよう。このノルム 4 が分解されるとしたら「1かける4」または「2かける2」だが、ノルム1の要素は単数であり、「1かける4」では「分解可能」の定義を満たさない。残された唯一の道は「2かける2」。つまり、ノルム2のアイゼンシュタイン整数が1個以上存在したとして、それらを掛け合わせ、2個のアイゼンシュタイン整数の積を 2(ノルムの積を 4)にできるなら、2 はアイゼンシュタイン整数の範囲では分解可能。でも、そんなことできるのだろうか。そもそも、ノルム2のアイゼンシュタイン整数って存在するの?
言い換えれば: a2 − ab + b2 = 2 を満たす整数 a, b があるか?
a と b が両方3の倍数なら、a2 − ab + b2 は3の倍数であり、「= 2」という条件に合わない(2は3の倍数じゃない)。a と b の一方だけが3の倍数なら――言い換えれば ≡ 0 (mod 3) なら――、他方の数は ≡ ±1 (mod 3) なので、その平方は ≡ 1 (mod 3)、従って a2 − ab + b2 ≡ 1。これも条件に合わない。最後に、a と b がどちらも3の倍数でなければ、a2 ≡ b2 ≡ 1, ab ≡ ±1 (mod 3)。この場合、a2 − ab + b2 ≡ 1 or 3 つまり ≢ 2 であり、やはり条件に合わない。
結局、任意のアイゼンシュタイン整数 a + bω について、そのノルム a2 − ab + b2 は、どういうパターンを考えても、3で割って2余る数にはなり得ない。
このことから、3で割って2余る素数(言い換えれば、3の倍数より1小さい素数)は、アイゼンシュタイン整数の範囲でも分解不可能であり、アイゼンシュタイン素数!
なぜなら、3で割って2余る素数 p = 3k + 2 がアイゼンシュタイン整数の範囲で p = AB と分解されるとして、両辺のノルムを考えると、左辺については norm(p) = p2 なので、右辺については norm(A) = norm(B) = p = 3k + 2 にならねばならない。上記のようにそれは不可能。その一例として、p = 2(それは3で割って2余る)は、アイゼンシュタイン素数。これが検証したいことだった。
【3】 他方、「普通の素数のうち、3で割って2余る数以外のものは、a2 − ab + b2 の形で書ける」ということになるのだろう、たぶん。ガウス整数で「4で割って3余る素数以外の素数は a2 + b2 の形で書けて、そこから素因数分解が生じる」ということから、類推すると…。
「3で割って2余る素数」以外の(普通の)素数は 3, 7, 13, 19, …。3以外は、「3で割って1余る素数」。
とりあえず 3 について、考えよう:
a2 − ab + b2 = 3 ‥‥「♪」
の解(整数解)だが、ちょっと試行錯誤してみると、例えば a = 2, b = 1 が見つかる。つまり、アイゼンシュタイン整数 2 + ω のノルムは 3。そこで、3 を 2 + ω で試し割りする。
3 / (2 + ω) = 3(1 − ω) / [(2 + ω)(1 − ω)] ←【★】
= (3 − 3ω) / (4 − 2 + 1) = (3 − 3ω) / 3 = 1 − ω
【★】の部分では、分母を有理化(より正確に言えば、自然数化)するため、分母分子に (2 + ω) の共役複素数 (1 − ω) を掛けた(前回の「そ」において a = 2, b = 1 に当たる)。すると新しい分母は、もともとの分母 a + bω のノルム a2 − ab + b2 に。この場合、割り算の結果自体、割る数の共役複素数となった:
3 = (2 + ω)(1 − ω) = (2 + ω) conj(2 + ω)
1 − ω のノルムも 3 であり、a = 1, b = −1 も「♪」の解の一例であることが分かる。いずれにせよ、3 はアイゼンシュタイン整数の範囲では分解可能なので、アイゼンシュタイン素数ではない!
まだ氷山の一角だが、少しは「宝の地図」が解読できてきた…。
【★】のような場合、a + bω の共役複素数を a + bω2 とも書けることから(なぜなら conj(ω) = ω2 で、共役のペアを b 倍したものも再び共役ペア、ペアのそれぞれに実数 a を足した結果も共役ペア)、分母分子に a + bω2 を掛けた方が、分かりやすいかもしれない。上記同様、分母は a2 − ab + b2 になる。分子については、ω2 = −1 − ω の関係を使って、整理できる:
3 / (2 + ω) = 3(2 + ω2) / (4 − 2 + 1) = 3(2 − 1 − ω) / 3 = 1 − ω
この (2 − 1 − ω) の部分は要するに 1 − ω なので、計算上は直接「そ」を使った方が少し早いが、こっちのやり方だと公式「そ」を覚える必要がない。
2022-04-22 アイゼンシュタイン整数(その6) ○2 − ○ × □ + □2 = 7 に当てはまる数は?
前回、普通の素数 2, 3, 5, 7, 11, … について、アイゼンシュタイン整数の世界では素数か合成数か?という問題に触れた。暫定的な結論としては:
解決すべき問題は 3k+1 型の素数のケース(例えば p = 7 や p = 13)。前回観察したように、 a2 − ab + b2 = p が整数解を持つのなら、その p はアイゼンシュタイン整数の世界で分解可能。
この整数解があるのか、ないのか、とりあえず数値的に検索してみよう!
kai_sagase(p) = { printf("p=%d: amari %d: ", p, p%3); for( a = 0, p, for( b = 0, a, if( a^2 - a*b + b^2 == p, printf("%d^2 - %d*%d + %d^2 = %d\n", a, a,b, b, p); return ) ) ); print("kai nashi"); } forprime( p = 2, 100, kai_sagase(p) );
これは、自由ソフトウェア PARI/GP用のスクリプト。100以下の素数(計25個)の一つ一つ p
について kai_sagase(p)
を実行する。kai_sagase
は a = 0 から p の範囲について、a2 − ab + b2 が p と等しくならないか全数検索を行う。
その際、b の範囲も 0 から p としてもいいのだが…。ちょっぴり工夫して「a は b 以上」という仮定を加えておこう。というのも、a2 − ab + b2 は a と b を入れ替えても値が変わらない式であり、従って、a が b より小さい場合については、a と b の名前を入れ替えれば、a は b 以上になる。例えば、a = 1, b = 3 のとき
a2 − ab + b2 = 12 − 1⋅3 + 32 = 1 − 3 + 9 = 7
となって素数 7 が得られるけど、a と b の値を入れ替えて a = 3, b = 1 としても、同じこと:
a2 − ab + b2 = 32 − 3⋅1 + 12 = 9 − 3 + 1 = 7
同じことならこっちの方がいいじゃん、計算途中で負の数も出ないしさ。んなわけで、b の検索範囲を 0 から a までに絞る(b は a 以下と仮定する)。
上記の範囲についての a と b の組み合わせを一つずつ順に試し、どこかで a2 − ab + b2 が p に等しくなるような a, b が見つかれば、それが解なので、printf
(フォーマット付き print
)で結果を報告、直ちに return
する。解が見つからないままループを抜けてしまった場合、kai nashi と印字して終了。
外側のループを抜ける直前の最後の検索は a = p についてのものだが、p = 5 の例で言えば、そのとき内側のループは b = 0 から 5 までなので、a2 − ab + b2 の値は
52 − 5⋅0 + 02 = 25
52 − 5⋅1 + 12 = 21
52 − 5⋅2 + 22 = 19
52 − 5⋅3 + 32 = 19
52 − 5⋅4 + 42 = 21
52 − 5⋅5 + 52 = 25
…作りたい値 5 よりはるかにでかい。a をさらに大きくして検索を続けても、ますます大きい値になってしまい、p = 5 を作れっこない。だから、ここまで探して駄目なら「解なし」と結論し、検索を打ち切っていい(これでも検索範囲が広過ぎるが、とりあえず狭過ぎるってことはない…必要な範囲を全部含んでいる)。
このスクリプトをPARIで実行すると、結果はこうなる(amari は p を 3 で割った余り)。
p=2: amari 2: kai nashi p=3: amari 0: 2^2 - 2*1 + 1^2 = 3 p=5: amari 2: kai nashi p=7: amari 1: 3^2 - 3*1 + 1^2 = 7 p=11: amari 2: kai nashi p=13: amari 1: 4^2 - 4*1 + 1^2 = 13 p=17: amari 2: kai nashi p=19: amari 1: 5^2 - 5*2 + 2^2 = 19 p=23: amari 2: kai nashi p=29: amari 2: kai nashi p=31: amari 1: 6^2 - 6*1 + 1^2 = 31 p=37: amari 1: 7^2 - 7*3 + 3^2 = 37 p=41: amari 2: kai nashi p=43: amari 1: 7^2 - 7*1 + 1^2 = 43 p=47: amari 2: kai nashi p=53: amari 2: kai nashi p=59: amari 2: kai nashi p=61: amari 1: 9^2 - 9*4 + 4^2 = 61 p=67: amari 1: 9^2 - 9*2 + 2^2 = 67 p=71: amari 2: kai nashi p=73: amari 1: 9^2 - 9*1 + 1^2 = 73 p=79: amari 1: 10^2 - 10*3 + 3^2 = 79 p=83: amari 2: kai nashi p=89: amari 2: kai nashi p=97: amari 1: 11^2 - 11*3 + 3^2 = 97
余り2のとき解がないことは、既に理論的に分かっている(数値的にもそうなっている)。問題は、余り1のときだが、この結果を見る限り「余り1なら必ず解がある」と予想される。
イースター定理(予想) 3k+1 型の素数 p は a2 − ab + b2 の形で書ける。
フェルマーのクリスマス定理と似ているので、適当に「イースター定理」と名付けておいた(正式名称ではない):
クリスマス定理 4k+1 型の素数 p は a2 + b2 の形で書ける。
クリスマス定理については「フェルマーのクリスマス定理で遊ばせて!」という記事、「直観的に分かる「第一補充法則」」というメモもあるけど、どちらも「ガウス整数の世界は一意分解整域なのか?」という根本をうやむやにしたままの議論だった(追記: 「複素数を使わない二平方の定理の証明」も参照)。しかも、平方剰余の第一補充法則や原始根の存在に依存した証明だった。「ユークリッド整域が一意分解整域であること」がきちんと導入されている今では、もっとしっかりした議論ができる。証明の方法についても、「多項式の根の数の上限」を利用して簡単化しよう。
素晴らしいことに、クリスマス定理についてのこの軽快な議論は、イースター定理の証明にも応用できる!
次回、その方法でクリスマス定理を証明し、それと対比させながら、平行的な方法でイースター定理も証明してみたい…。「そもそもアイゼンシュタイン整数の世界では、素数という概念が成り立つのか?」というのが核心だが、その点については便宜上、結論を先取りしておき、後から「アイゼンシュタイン整数の世界はユークリッド整域(だから素因数分解ができる)」ということを証明する。
2022-04-23 アイゼンシュタイン整数(その7) クリスマス定理とイースター定理
フェルマーは、ガウスの前の時代の人なので、ガウス整数の概念を知らなかったはず。下記の証明法を見たら、びっくりするだろう!
【1】 比較的簡単なことから…。
補助定理1 普通の素数 p は、もしガウス整数として分解可能なら、2個の平方数の和として表現可能。
〔例〕 p = 13 について 13 = 32 + 22 と書けることと、13 = (3 + 2i)(3 − 2i) と分解できることは、本質的に同じ意味。
証明 仮定により、ガウス整数 A = a + bi, B = c + di があって p = AB と分解される(「分解可能」の定義から、A も B も単数ではない)。この左辺のノルム norm(p) = p2 は、右辺のノルム norm(A) × norm(B) に等しいが、A, B は単数ではないので、どちらのノルムも 1 ではない。
norm(p) = p2 = norm(A) × norm(B)
が成り立つためには、norm(A) = norm(B) = p となるしかない。ノルムは距離の2乗なので、
p = norm(A) = a2 + b2
となって、p は2個の平方数の和として表される。□
【2】 オードブル。
クリスマス定理(Fermat、グレゴリオ暦1640年12月25日) p が4k+1型の素数なら、p は2個の平方数の和 a2 + b2 として表現可能。
証明 p−1 = 4k は4の倍数。フェルマーの小定理から、次の方程式は 4k種類の解 x = 1, 2, 3, …, p−1 を持つ:
xp−1 − 1 = x4k − 1 = (x2k + 1)(x2k − 1) ≡ 0 (mod p)
この方程式は「x2k + 1 ≡ 0 または x2k − 1 ≡ 0」と同じ意味。2k次方程式の解は2k種類以下なので、合計で上記4k種類の解があるからには、「または」の前も後も2k種類の解を持つ必要がある:
x2k + 1 ≡ 0
この式に(2k種類の)解があることは分かっているので、その一つを x = c とすると:
c2k + 1 ≡ 0 つまり (ck)2 + 1 ≡ 0
すなわち、方程式
x2 + 1 ≡ 0
は解を持つ: x = ck が解の一例。この ck に当たる自然数を n とすると…
x = n は x2 + 1 ≡ 0 (mod p) を満たす
つまり n2 + 1 ≡ 0 (mod p)
言い換えれば n2 + 1 を p で割ると 0 余る
要するに:
n2 + 1 = (n + i)(n − i) は p で割り切れる。
ガウス整数の世界において、もし仮に p が素数なら、素数の定義から「n + i は p で割り切れるか、または n − i は p で割り切れる」が、以下の理由からそれは不可能。
(理由) n + i を自然数 p で無理やり割ると、商は n/p + (1/p)i だが、ガウス整数は実部も虚部も(普通の)整数なのだから、虚部 1/p なんてのは問題外。こんなもんはガウス整数ではなく、「ガウス整数の範囲では、n + i は p で割り切れない」と結論される。n − i についても同様。
要するに、p はガウス素数ではないので、ガウス整数の世界では分解可能! 従って、補助定理1により、p を2個の平方数の和として表すことができる。□
上記は Keith Conrad: Gaussian integers
https://kconrad.math.uconn.edu/blurbs/ugradnumthy/Zinotes.pdf
の Theorem 9.6 に当たる。K・コンラッドのノートは、初心者向けで親切。以下、同じ証明方法をアイゼンシュタイン整数に適用するが、上記の証明の根幹となっているのは「ガウス整数の世界でも、素数の概念が成立する」という事実であり、「アイゼンシュタイン整数でもそうなの?」ということは、別途確認する必要がある。
【3】 プロイセン風味のスープなどいかがでしょう? 補助定理1のアイゼンシュタイン版。
補助定理1(証明済み・再掲) 普通の素数 p は、もしガウス整数として分解可能なら、a2 + b2 の形で書ける。
補助定理2 普通の素数 p は、もしアイゼンシュタイン整数として分解可能なら、a2 − ab + b2 の形で書ける。
証明(【1】をコピペしてちょっと書き換えただけ) 仮定により、アイゼンシュタイン整数 A = a + bω, B = c + dω があって p = AB と分解される(「分解可能」の定義から、A も B も単数ではない)。この左辺のノルム norm(p) = p2 は、右辺のノルム norm(A) × norm(B) に等しいが、A, B は単数ではないので、どちらのノルムも 1 ではない。
norm(p) = p2 = norm(A) × norm(B)
が成り立つためには、norm(A) = norm(B) = p となるしかない。アイゼンシュタイン整数の世界におけるノルムの定義から、
p = norm(A) = a2 − ab + b2
となる。□
アイゼンシュタイン整数の世界での「単数」は「1の約数」「ノルムが1の数」。この世界でもガウス整数の世界でも、ノルムの実体は「絶対値の2乗」だが、基本単位に i と ω という違いがあるため、式の表現は異なる(ガウス整数における a2 + b2 に対して、こっちでは −ab という項が追加されている。虚数方向の単位ベクトル ω が垂直でないので、「斜めになって横座標がずれる」部分が補正されてる)。
【4】 キュービック・サラダ。
恒等式① X3 − 1 = (X − 1)(X2 + X + 1)
この式を導く筆算は「その2」の【2】。4次式以上でも、同様のパターンになる(げんしこん・その4【3】)。
X2 + 1 が複素数の範囲では (X + i)(X − i) と分解されるように(なぜなら X = ±i は X2 + 1 = 0 の解である)、X = ω と X = ω2 は X2 + X + 1 = 0 の解だから(「その2」の【2】)、次の分解が成り立つ。
恒等式② X2 + X + 1 = (X − ω)(X − ω2)
「解 α, β を持つ2次方程式を (X − α)(X − β) と書ける」というだけだが、展開して直接確かめることもできる…
右辺 = X2 − Xω2 − ωX + ω3 = X2 + X(−ω2 − ω) + 1 = 左辺
ここで ω は1の立方根だから ω3 = 1 は当然として、−ω2 − ω = 1 になる理由は: X = ω は X2 + X + 1 = 0 の解だから、
ω2 + ω + 1 = 0 移項して 1 = −ω2 − ω。
あるいは、ω と ω2 は共役複素数のペアで実部 −½ なのだから、符号を全部反転させた −ω と −ω2 も、共役ペアで実部 ½。共役ペアを足し合わせれば、虚部が消え、実部が2倍になる(½ の2倍は1)。
【5】 さて、本日のメインディッシュ。証明の流れは【2】と同じ。
「イースター定理」 p が3k+1型の素数なら、p は a2 − ab + b2 の形で表現可能。
〔例〕 19は「3で割って1余る素数」なので、○2 − ○ × □ + □2 の形で書ける。具体的には、○に5、□に2を入れればいい。「イースター定理」は、解の求め方について、何も教えてくれない。「具体的にどうやって解を求めるかはさておき、解があることは保証するよ」という存在定理。
証明 p−1 = 3k は3の倍数。フェルマーの小定理から、次の方程式は 3k種類の解 x = 1, 2, 3, …, p−1 を持つ:
xp−1 − 1 = x3k − 1 = (xk + 1)(x2k + xk + 1) ≡ 0 (mod p)
〔注〕 この展開は、恒等式①で X = xk としたもの。
この方程式は「xk + 1 ≡ 0 または x2k + xk + 1 ≡ 0」と同じ意味。k次方程式の解はk種類以下なので、合計で3k種類の解があるからには、「または」の後ろにある次の式が、2k種類の解を持つ必要がある:
x2k + xk + 1 ≡ 0
この式に(2k種類の)解があることは分かっているので、その一つを x = c とすると:
c2k + ck + 1 ≡ 0 つまり (ck)2 + ck + 1 ≡ 0
すなわち、方程式
x2 + x + 1 ≡ 0
は解を持つ: x = ck が解の一例。この ck に当たる自然数を n とすると…
x = n は x2 + x + 1 ≡ 0 (mod p) を満たす
つまり n2 + n + 1 ≡ 0 (mod p)
言い換えれば n2 + n + 1 を p で割ると 0 余る
要するに(恒等式②を使うと):
n2 + n + 1 = (n − ω)(n − ω2) は p で割り切れる。
アイゼンシュタイン整数の世界において、もし仮に p が素数なら、素数の定義から「n − ω は p で割り切れるか、または n − ω2 は p で割り切れる」が、以下の理由から、それは不可能。
(理由) n, p は、自然数なので虚数成分を含んでいない: n − ω の虚部は −ω = −(−1 + i√3)/2 の虚部 −(√3)/2 に等しい。そうすると、n − ω を p で無理やり割った商において、虚部は −(√3)/(2p) になるけど、アイゼンシュタイン整数の虚部は、√3 の半分より細かい単位の端数を持ち得ないのだから、(√3)/(2p) なんてのは問題外。「アイゼンシュタイン整数の範囲では n − ω は p で割り切れない」と結論される。n − ω と n − ω2 は共役複素数で、虚部の絶対値は同じ: 前者が p で割り切れないのだから、後者も p で割り切れない。
要するに p はアイゼンシュタイン素数ではないので、アイゼンシュタイン整数の世界では分解可能! 従って、補助定理2により、p を a2 − ab + b2 の形で表すことができる。□
この証明を真に完成させるためには「アイゼンシュタイン整数の世界は、一意分解整域」ということと「p は単数ではない」ということを示す必要がある。これらの件は、次回以降。
【6】 デザート。クリスマス定理、イースター定理のどちらも、次の意味において、逆も成り立つ。
クリスマス定理の逆 2以外の素数 p について、もし p が2個の平方数の和 a2 + b2 として表現可能なら、p は4k+1型の素数(愛称: バニラ素数)。
証明 2以外の素数 p は奇数。仮定により p = a2 + b2 だが、もし a, b が両方偶数、または両方奇数なら、a2 + b2 は偶数になってしまうので、a, b の一方は偶数、他方は奇数。偶数の側を 2m、奇数の側を 2n + 1 とすると、
p = a2 + b2 = (2m)2 + (2n + 1)2
= 4m2 + 4n2 + 4n + 1 = 4(m2 + n2 + 1) + 1
k = m2 + n2 + 1 と置くと p = 4k + 1。□
イースター定理の逆 3以外の素数 p について、もし p が a2 − ab + b2 の形で表現可能なら、p は3k+1型の素数(愛称: ミント素数)。
証明 3以外の素数 p は、3の倍数ではない。仮定により p = a2 − ab + b2 だが、もし a, b が両方3の倍数なら、この値は3の倍数になってしまう。従って、a, b の少なくとも一方は、3の倍数ではない。3の倍数ではない方を a として、a, b が取り得る値を mod 3 において分類すると:
a b | a^2 −ab b^2 | 左の3項の和 1 0 | 1 0 0 | 1 1 1 | 1 −1 1 | 1 1 −1 | 1 +1 1 | 0 −1 0 | 1 0 0 | 1 −1 1 | 1 +1 1 | 0 −1 −1 | 1 −1 1 | 1
つまり p = a2 − ab + b2 ≡ 1 or 0。p は3の倍数じゃないので、このうち ≡ 0 はあり得ない。□
上の分類表から分かることとして、ミント素数を a2 − ab + b2 の形で表現したとき、a, b の一方が3の倍数になるか(スイート)、さもなければ a ≡ b (mod 3) となる(ビター)。
「ビター」の場合 a−b は3の倍数。一般に a, b, a−b のどれか一つだけが3の倍数になる。
この観点から、前回の数値例を見直してみよう(a, b は入れ替え可能だが、下の表では絶対値が大きい方を a としている)。
100以下のミント素数とフレーバー p=7: a=3, b=1: 3^2 - 3*1 + 1^2 = 7 スイートa(3の倍数) p=13: a=4, b=1: 4^2 - 4*1 + 1^2 = 13 ビター1(aを3で割った余り=bを3で割った余り) p=19: a=5, b=2: 5^2 - 5*2 + 2^2 = 19 ビター2 p=31: a=6, b=1: 6^2 - 6*1 + 1^2 = 31 スイートa p=37: a=7, b=3: 7^2 - 7*3 + 3^2 = 37 スイートb p=43: a=7, b=1: 7^2 - 7*1 + 1^2 = 43 ビター1 p=61: a=9, b=4: 9^2 - 9*4 + 4^2 = 61 スイートa p=67: a=9, b=2: 9^2 - 9*2 + 2^2 = 67 スイートa p=73: a=9, b=1: 9^2 - 9*1 + 1^2 = 73 スイートa p=79: a=10, b=3: 10^2 - 10*3 + 3^2 = 79 スイートb p=97: a=11, b=3: 11^2 - 11*3 + 3^2 = 97 スイートb
この範囲では、ビターよりスイートが起きやすい。この範囲では「ビター2」は珍しく、特に a も b も 8 にはならない。もっと広い範囲を調べても、絶対 8 にはならないのだろうか?
関連するかもしれない事柄として、素数の地図をよく見ると、原点を幾重にも囲む「正六角形」のうち、(8, 0) を通る正六角形の上には、アイゼンシュタイン素数が1個もない。この現象には、意味があるのだろうか?
数論の世界には謎が多い…。
2022-04-25 目で見るアイゼンシュタイン整数(その8) ミント素数7の分解
【1】 3で割って1余る素数(ミント素数)は、必ず a2 − ab + b2 の形を持ち(イースター定理)、アイゼンシュタイン整数の範囲では分解される。最小のミント素数 p = 7 について言えば、
7 = 32 − 3⋅1 + 12
つまり a = 3, b = 1。
言い換えると、A = a + bω = 3 + ω のノルムは p = 7。ノルムは原点からの距離の2乗なので、幾何学的には、下図の点 A の絶対値(=原点からの距離)が √7 という意味になる。
確かめてみよう。A が 3 + ω であること: 原点から、実数軸の正の方向に3単位進むと、もちろん 3; そこから ω 方向(偏角120度の左上、黄緑軸の方向)に1単位進むと A になる。この a = 3, b = 1 という位置は、普通の直交座標で言えば、
(5/2, (√3)/2)
に当たる。作図から一目瞭然だが、ω = (−1 + i√3)/2 を使って直接計算しても、簡単に確かめられる:
3 + ω = 6/2 + (−1 + i√3)/2 = 5/2 + i(√3)/2 ‥‥【#】
だから、この点までの距離の2乗は、(5/2)2 + ((√3)/2)2 = 25/4 + 3/4 = 28/4 = 7。これがノルム。この点までの距離は、√7 となる。
一方、実数軸に対して対称の位置にある B = conj(A) を考えると、積 AB の偏角はもちろんゼロ、絶対値は √7 × √7 = 7。つまり AB = 7 となり、ミント素数 7 が分解される!
【2】 B の具体的な値について。ガウス整数の感覚では A = 3 + ω の共役は 3 − ω になりそうな気もするが、ω は純虚数ではなく「斜め左上」なので、−ω は「斜め右下」になってしまう(3 − ω は図の D の位置)。図をよく見れば、B は 2 から黄緑の −ω 方向に1単位進んだ場所――言い換えれば、3 から水色の −1 − ω (= ω2) 方向に1単位進んだ場所。公式としては…
conj(a + bω) = a + bω2 = a + b(−1 − ω) = (a − b) − ω
…となるけど、その感覚的意味は: ω には −½ の実数成分が含まれるので、a + bω は、a の真上から、横に −b/2 ずれている。同様に −ω には +½ の実数成分が含まれるので、a − bω は、a の真下から、横に +b/2 ずれている。これらのずれを補正して、a + bω の真下の位置を求めるには、a − bω の実数成分に −b の補正を加えればいい:
a + bω の共役複素数は a − bω と実部が −b 違う: つまり (a − b) − bω
a + b(−1 − ω) = a + bω2 とも書ける
なぜなら ω は x2 + x + 1 = 0 の解だから ω2 + ω + 1 = 0
移項して ω2 = −1 − ω
〔例〕 a = 3, b = 1 の A = 3 + ω の共役は B = (3 − 1) − ω = 2 − ω。図からも確認できるが、直接計算すると:
2 − ω = 4/2 − (−1 + i√3)/2 = 5/2 − i(√3)/2 ‥‥【#】の共役
結局 p = 7 = (3 + ω)(2 − ω) が、ミント素数 7 の分解。
〔検算〕 (3 + ω)(2 − ω) = 6 − 3ω + 2ω − ω2 = 6 − ω − (−1 − ω) = 7
【3】 一般に、ミント素数 p = a2 − ab + b2 は、
p = (a + bω) × conj(b + ω) = (a + bω)(a − b − ω) と分解可能。
〔例〕 p = 13 = 42 − 4⋅1 + 12 だから:
13 = (4 + ω)(3 − ω)
検算 右辺 = 12 − 4ω + 3ω − ω2 = 12 − ω − (−1 − ω) = 13
アイゼンシュタイン整数の世界において、(普通の整数の)ミント素数を分解した因子たち―― a + bω と、その共役 (a − b) − bω ――は、ノルムが(普通の)素数 p なので、それ以上は分解不可能。この2個の因子は、アイゼンシュタイン素数である!
ガウス整数の世界で、バニラ素数 p が (a + bi)(a − bi) と分解されるとき、因子 a + bi, a − bi はガウス素数。上記の振る舞いもそれと同様。
我がドイツの数論、代数学は世界一ィィィ! 一意分解できん数はないイイィーッ!
宝の地図の解読が進み、基本構造が見えてきた:
A = 3 + ω のノルム 9 − 3 + 1 = 7, C = 4 + ω のノルム 16 − 4 + 1 = 13, E = 5 + 2ω のノルム 25 − 10 + 4 = 19 は、最初の3個のミント素数(3k+1型): アイゼンシュタイン整数の範囲では、それぞれ共役複素数の積として AB, CD, EF と分解される。2 と 5 は、アイゼンシュタイン整数の範囲でも素数(3k+2型。愛称: ワッフル素数)。μ = 2 + ω と共役の λ = 1 − ω は、ノルム3。この 3 は、ミント(3k+1型)でもワッフル(3k+2型)でもない特別な素数(後述)。
実は地図の大部分のエリアについては、個別に考える必要ない: 偏角0~60°の範囲の素数を60°の整数倍回転させただけなので。しかも、その60°の範囲も、偏角30°の半直線について対称なので!
2022-04-28 目で見るアイゼンシュタイン整数(その9) 割り算の図解
【1】 アイゼンシュタイン整数は、図のひし形の「タイル」というか「格子」の頂点。
どのアイゼンシュタイン整数も、原点から右に向かう赤いベクトル 1 と、原点から(偏角120°の)左上に向かう黄緑のベクトル ω を使って「1 の整数倍 + ω の整数倍」の形で表される。例えば、図の Q は 1 − ω だし、R は −3 − 2ω だよね。図の×印の C は、ひし形の頂点ではないので、アイゼンシュタイン整数ではない。
【2】 ω の定義は −1/2 + i(√3)/2。原点から ω の点までの距離(言い換えれば ω の絶対値)はちょうど 1。複素数の絶対値を普通に計算すれば、確かにそうなる:
ω の絶対値の2乗 = (−1/2)2 + ((√3)/2)2 = 1/4 + 3/4 = 1。
まぁ単位円上にあるんだから、原点からの距離が 1 なのは当然だけど…
ひし形の短い対角線の長さ(図の水色の線の1区間)も、ちょうど 1。一方、ひし形の長い対角線の長さ(例えば 1 から ω までの距離)は、1 より長いが、2 よりは短い(正三角形の辺に沿って「く」の字状に進んでも、距離 2 なのだから、真っすぐショートカットすれば 2 より短くなる)。ピタゴラスの定理から、辺の長さ1の正三角形の高さは (√3)/2 ≈ 0.866。だから、このひし形の「右下と左上を結ぶ対角線」の長さは √3 ≈ 1.732。
【3】 割り算の例として、A = 6 − 5ω を B = 7 + 2ω で割る。複素数の範囲でなら、もちろん普通に割り切れて、商 C = A/B は複素平面上のどこかの点になる。具体的には×印の点に当たる。逆算すれば、A = BC。
C は、アイゼンシュタイン整数ではない。アイゼンシュタイン整数の範囲での商としては、最寄りの点 Q で代用するのが妥当だろう。Q は、正確に割り切れた商 C とは違うので、もはや A = BQ という逆算は成り立たず、多少の誤差が生じる: 誤差を R とすると、A = BQ + R。
A, B, Q はアイゼンシュタイン整数。アイゼンシュタイン整数の和・差・積は再びアイゼンシュタイン整数なので、R = A − BQ も、アイゼンシュタイン整数。だから
A = BQ + R つまり A ÷ B = Q 余り R
という計算は、アイゼンシュタイン整数の世界で完結する。余り R のサイズが、割る数 B のサイズより小さくなるなら、それはユークリッドの割り算。常にそうなることを示したい。単純に絶対値(距離)を使ってサイズを表すことにすると…
どんな割り算をして C の×印がどこに来るとしても、平面上にはひし形がぎっしり敷き詰められているので、どれかのひし形の、どれかの頂点 Q が×印のそばにある。C = A/B と Q のずれは、最悪でも (√3)/2 ≈ 0.866 以下。この最悪ケースは、C の×印がひし形のど真ん中に来て、しかも Q として、わざわざ(この状況では右上の頂点が最寄りだが、あえて)左上の頂点を選択した場合に当たる。不等式で書くと:
|C − Q| = |A/B − Q| ≤ (√3)/2
不等号の両辺を |B| 倍すると |A − BQ| ≤ (√3)/2 × |B|
R = A − BQ なので |R| ≤ (√3)/2 × |B| < |B|
これが示したいことだった! 最後の不等式の両辺を2乗すれば、こう書くこともできる:
norm(R) < norm(B)
ユークリッドの割り算が成り立つ以上、アイゼンシュタイン整数の世界はユークリッド整域。この世界では、普通に最大公約数を考えることができる。「ユークリッド整域は一意分解整域」ということは証明済みなので、アイゼンシュタイン整数の世界では素因数分解が普通にできる。
この強力な世界を使って、何をしましょう? フェルマーの最終定理の n=3 の場合を証明するのが順路かもしれないが、そこは超有名な観光名所。あまり人の行かない「田舎の数学」をのんびり楽しみたい気もする。「素数 p が x2 + 3y2 の形を持つ必要十分条件」(拡張クリスマス定理の一種)なんて、渋くていいかも…?
【4】 A = BQ + R の意味。
A/B = C は、本来 BC = A になる C を求めること。けれど、アイゼンシュタイン整数の世界には、そのような C がないので、Q で近似した。積 BQ を S とすると、Q が近似的なので S は A に正確には等しくならないが、それなりに A に近い値になる。具体的に、S から左に3単位、下に2単位ずらすと、本来のターゲット A に達する。この「左に3、下に2」という補正ベクトル 3 − 2ω が R に他ならない:
A = BQ は成り立たないけど A = BQ + R なら成り立つ!
R を好き勝手に選べるなら、どんなに A と S = BQ がずれちゃっても R で補正できるけど、ユークリッドの割り算では「R のサイズが B のサイズより小さい」という厳しい条件がある。この場合で言えば:
S = BQ が「A から距離 |OB| 未満のどこか」になるように、Q を選択できるか?
というのが問題。答えは「イエス」。
考えている世界(この場合、アイゼンシュタイン整数の世界)のどんな要素 A と B に対しても、条件を見たす Q と R が、その世界内にある…ということが、ユークリッド整域の意味。ただし、割り算なので B ≠ 0 とする。
【5】 そもそも複素平面上において BQ = S とは、どういうことだろうか。
複素数の掛け算は、偏角の足し算、絶対値の掛け算。上の例では…。半直線 OB の傾きは、目分量で 20° くらい(?)、半直線 OQ の傾きは、−30°(赤と黄緑の成す鋭角 60° の半分)。だから、偏角の和は −10° くらい。これが半直線 OS の傾き。「ちょっと待て、どう見ても OS は −10° よりは、もっと傾いてるだろ!」っていう感じだけど、大ざっぱな作図&目分量なので…。OB の長さ(絶対値)は、これまた大ざっぱに 7 くらい、OQ の長さは √3 なので、1.5 よりちょっと大きい。それらの積は 7 × 1.5 = 10.5 よりちょっと大きい…まぁ 11 か 12 くらいだろう。これが OS の長さ(絶対値)に当たる。
きちんと計算してみると…
半直線 OB の傾き 16.1° について納得がいかない気がするので(もうちょっとでかい角度のようにも見える…)、その部分を拡大・再描画してみた。見たところ、30° の半分(つまり 15°)より少し大きいのは確か。
計算によると、図の OE の傾き、つまり arg(4 + ω) は、約 13.9°。青線はその少し上を通っているので、16° くらいで間違いないだろう。
〔注〕 OE の傾きは 15° より少し小さい。「E は線分 GH の中点だから 30° のちょうど半分では?」という気もするかもしれないが、それは「もしも △OGH が二等辺三角形だったら」の話(この場合は当てはまらない)。E は、横座標 3.5 で、縦座標 2分の √3 だから、この傾きは:
(√3)/2 ÷ (7/2) = (√3)/2 × (2/7) = (√3)/7 = 1.732… / 7 = 0.24…
一方、tan 15° = 2 − √3 = 2 − 1.732… は 0.26 台:
tan 15° = (sin 15°) / (cos 15°) = [(√6 − √2)/4] / [(√6 + √2)/4] = (√6 − √2) / (√6 + √2)
= (√6 − √2)2 / [(√6 + √2)(√6 − √2)]
= (6 − 2√12 + 2) / (6 − 2) = (8 − 4√3) / 4 = 2 − √3
2022-04-26 アイゼンシュタイン整数(その10) 割り算の計算
「その9」で幾何学的に図解した割り算。「水平成分」と「ω成分」に分けて計算してみる。
【1】 A = a + bω を B = c + dω で割り、商が Q で余り R という形にしたい。もちろん A, B, Q, R はアイゼンシュタイン整数(a, b, c, d は普通の整数)。
〔注〕 以下の計算では、(xω)(yω) = −xy − xyω という関係を断りなく使う。左辺 = xyω2 = xy(−1 − ω)。
まず複素数の範囲で A/B を求めよう(B ≠ 0)。分母の共役複素数 c − d − dω を分子・分母に掛け、分母を自然数
n = norm(B) = c2 − cd + d2
にする:
A/B = (a + bω) / (c + dω) = (a + bω)(c − d − dω) / n ‥‥「た」
「た」の分子は:
(a + bω)(c − d − dω)
= ac − ad − adω + bcω − bdω + bd + bdω
= (ac − ad + bd) + (bc − ad)ω
すっきりさせるため m1 = ac − ad + bd, m2 = bc − ad と置くと、「た」の分数は:
A/B = (m1 + m2ω) / n = (m1/n) + (m2/n)ω ‥‥「ち」
さらにすっきりさせるため
U = m1/n = (ac − ad + bd)/n
V = m2/n = (bc − ad)/n
と置くと、「た」つまり「ち」は:
A/B = U + Vω ‥‥「つ」
【2】 U = m1/n と V = m2/n は(一般には整数ではなく)有理数だが、小数部分を四捨五入すれば、それぞれ次の整数 u, v に近い(誤差½以内):
u = round(U), |U − u| ≤ ½
v = round(V), |V − v| ≤ ½
u + vω を Q とすると、u, v は普通の整数だから Q はアイゼンシュタイン整数であり、複素数の範囲での正確な商 A/B = U + Vω に近い値を持つ。両者の差
δ = (U − u) + (V − v)ω ‥‥「て」
は複素数だが、この δ は、「複素数 A/B」と「複素数としての Q」の「ずれ」(距離)を表す。「ノルム」=「距離の2乗」なので、δ のノルムを計算すると「ずれの絶対値」の2乗が得られる。どんなにずれが大きくても、この値は ¾ 以下:
norm(δ) = (U − u)2 − (U − u)(V − v) + (V − v)2
≤ (½)2 − (½)(−½) + (½)2 = ¾ ‥‥「と」
ここで扱う複素数は、一般の複素数の中でも {x + yω | x, y は有理数} の形を持つ要素――有理数と ω から構成される「アイゼンシュタイン有理数」。普通の整数と ω から構成される数の「アイゼンシュタイン整数」の世界は、この「アイゼンシュタイン有理数」の部分集合に当たる。「アイゼンシュタイン有理数」は、一般には無理数 √3 が絡む虚数成分を持つので、普通の意味での有理数ではなく、実数ですらない。けれど、「アイゼンシュタイン有理数」の世界の中では、四則演算を自由に行うことができる。
【3】 アイゼンシュタイン整数の範囲での A/B の商を Q = u + vω として、余りを R とする:
A = BQ + R
アイゼンシュタイン整数は、和・差・積について閉じているので、R = A − BQ もアイゼンシュタイン整数。これがユークリッドの割り算になっていることを言うには、「余り R が割る数 B より小さくなる」ことを示せばいい。ノルムで表現すると:
norm(R) < norm(B)
「つ」「て」と R, Q の定義から:
R = A − BQ = (A/B − Q)B = [(U + Vω) − (u + vω)]B = δB
この等式の左端と右端のノルム(絶対値の2乗)を考えると:
norm(R) = norm(δB) = norm(δ) norm(B)
「と」によって norm(δ) ≤ ¾ なので:
norm(R) = norm(δ) norm(B) ≤ ¾ norm(B) < norm(B)
つまり、ユークリッドの割り算が成立。前回は係数 (√3)/2 ≈ 0.866 で上から押さえたが、今回の計算法だと係数 ¾ = 0.75。前回の評価では距離をそのまま使っているが、今回はノルム(距離の2乗)でサイズを表しているので、前回の 0.866 が平方されて 0.75 になった。この係数が 1 未満である限り、R のサイズが B のサイズより小さいという結論に、変わりはない。
【4】 R = A − BQ の値を明示的に書くと:
R = (a + bω) − (c + dω)(u + vω)
= a + bω − (cu + cvω + duω − dv − dvω)
= (a − cu + dv) + (b − cv − du + dv)ω ‥‥「な」
あまり美しい式ではないが、ユークリッドの互除法を実装するとき、使えるかも。
ていうか、このゴチャゴチャした「な」は、合ってるんだろうか。汚い検証プログラムを手早く書いてみる。えーと…
w=(-1+sqrt(-3))/2; test(a,b,c,d) = { A = a+b*w; B = c+d*w; n = c^2-c*d+d^2; U = (a*c-a*d+b*d)/n; u = round(U); V = (b*c-a*d)/n; v = round(V); Q = u+v*d; R = (a-c*u+d*v) + (b-c*v-d*u+d*v)*w; print(R, " is R\n", A-B*Q, " is A-B*Q"); }
test(1,2,3,4) などとすると期待通りの出力が得られるが、入力値によっては答えが合わない。上記のどこかに計算ミスがあるか、このスクリプトのどこかにバグがあるらしい。どこで間違えたんだろ?
あー Q = u+v*d じゃなくて Q = u+v*w じゃねーか。単なるミスタイプか。これを直せば…
w=(-1+sqrt(-3))/2; test(a,b,c,d) = { A = a+b*w; B = c+d*w; n = c^2-c*d+d^2; U = (a*c-a*d+b*d)/n; u = round(U); V = (b*c-a*d)/n; v = round(V); Q = u+v*w; R = (a-c*u+d*v) + (b-c*v-d*u+d*v)*w; print(R, " is R\n", A-B*Q, " is A-B*Q"); }
うん、合ってるみたいだ。やれやれ、良かった!
2022-04-30 アイゼンシュタイン整数(その11) x2 + 3y2 = p
自然数の中で、真の約数を持たない 2, 3, 5, 7, 11, 13, 17, 19, … は素数と呼ばれます。フェルマーは、このような数が「2個の平方数の和 x2 + y2 として表されるか?」を考えました。
2 を例外とすると、素数は 4 で割って 1 余るバニラ素数(5, 13, 17, …)と、4 で割って 3 余るチョコレート素数(3, 7, 11, 19, …)に分類できます。バニラ素数については
22 + 12 = 5
32 + 22 = 13
42 + 12 = 17
のように、2平方数の和で表されるのですが、チョコレート素数ではそれができないのです(フェルマーのクリスマス定理)。一方、例外の素数 2 については、
12 + 12 = 2
と、2平方数の和で表されます。
これと似た問題として、素数 p が x2 + 3y2 = p の形で表されるかどうか…
3 を例外とすると、素数は 3 で割って 1 余るミント素数(7, 13, 19, …)と、3 で割って 2 余るワッフル素数(2, 5, 11, 17, …)に分類できます。ミント素数については
22 + 3 × 12 = 7
12 + 3 × 22 = 13
42 + 3 × 12 = 19
のように、この形で表されるのですが、ワッフル素数ではそれができないのです。一方、例外の素数 3 については、
02 + 3 × 12 = 3
と、この形で表されます。
一見簡単な算数のようなこの性質は、複素数 ω = (−1 + (√−3))/2 を使ったアイゼンシュタイン整数の世界と結び付いてます。アイゼンシュタイン整数 E = a + bω のノルムは:
norm(E) = a2 − ab + b2
(ノルムは E を複素平面上の点と見なしたときの、原点から E までの距離の2乗です。言い換えれば E の絶対値の2乗)。この b2 を (¼ + ¾)b2 と考えると、こう書けます。
norm(E) = a2 − ab + b2/4 + 3b2/4
norm(E) = (a − b/2)2 + 3(b/2)2 ‥‥♥
例えば E = 5 + 2ω として(a = 5, b = 2)、♥ を使ってそのノルムを計算すると:
(5 − 2/2)2 + 3(2/2)2 = 42 + 3 × 12 = 19
ミント素数 19 について、自然に x2 + 3y2 = 19 の整数解が見つかりました!
アイゼンシュタイン整数のノルム a2 − ab + b2 の形式は、x2 + 3y2 と密接に関係しているようだ…という感触が得られます。
でも上の例は、たまたま b が偶数だから良かったけど、b が奇数だったら b/2 の部分が整数にならず、x2 + 3y2 の整数解が得られないのでは…?
任意のミント素数 p について、ノルム p のアイゼンシュタイン整数 E が存在することは分かっているのですが(イースター定理)、上記の応用のためにはそれだけでは駄目で「ノルムが p で、しかも ω の係数 b が偶数であるような、アイゼンシュタイン整数が存在する」ということを示す必要があります。うーん、ちょっとややこしくなってきたぞ。
ノルム p のアイゼンシュタイン整数 E = a + bω が見つかったとして、もし b が偶数でなくても、a が偶数であれば問題ありません。というのも、ノルムの式において a2 + b2 も −ab も「a と b を入れ替えても値は同じ」なので、E の代わりに F = b + aω を考えれば、ノルムは同じ p のままで ω の係数を偶数にできます!
〔例〕 E = 4 + ω とすると(a = 4, b = 1)、norm(E) = 42 − 4 × 1 + 12 = 13 はミント素数だけど、肝心の ω の係数が偶数ではない…。そんなときは代わりに F = 1 + 4ω を考えよう。a, b の名前を入れ替えて a = 1, b = 4 とすると norm(F) = 12 − 1 × 4 + 42 = 13 は同じ値。でもって、♥ に当てはめると…
(1 − 4/2)2 + 3(4/2)2 = (−1)2 + 3 × 22 = 13
2乗してしまうので符号は関係なく (−1) を 1 で置き換えても構わない。x2 + 3y2 = 13 の整数解が得られた(x = 1, y = 2)。
しかーし! 安心するのはまだ早い。もし a と b が両方とも奇数だったら、どうすれば…。例えば E = 3 + ω のとき norm(E) = 32 − 3 × 1 + 12 = 7 はミント素数 p = 7 だけど(a = 3, b = 1)、a と b を入れ替えても ω の係数を偶数にできない。これは困ったぞ…。
こういうときには、別のアイゼンシュタイン整数でノルムが同じものを探しましょう…。アイゼンシュタイン整数は「正六角形」のような世界なので、原点を中心に 60° や 120° 回転させた場所にも、対応する点(原点からの距離が同じ)があるはず。教科書的にはそれを考えればいいのですが…だけど、座標を回転させる処理って、微妙に面倒くさいよね。90° ならともかく、60° とかって…。そこで、今回は教科書を無視して(笑)、代わりに共役複素数を使っちゃおう。共役複素数は、実数軸を挟んで正反対の位置にあるので、原点からの距離も同じ、だからノルムも同じ。しかも a + bω の共役は a + bω2。オメガの肩に2を付けるだけというお手軽さ。基本公式 ω2 = −1 − ω をサクッと使うと(その4【3】、その8【2】も参照)…
a + bω2 = a + b(−1 − ω) = (a − b) − bω
a, b が両方奇数のケースを考えているので、a − b は偶数。ω の係数 b は奇数のままだけど、第1成分と第2成分を入れ替えても、ノルムは変わらないのだから…
(a − b) − bω 成分を入れ替えて −b + (a − b)ω
めでたく ω の係数が偶数に!
〔例〕 E = 3 + ω とすると(a = 3, b = 1)、norm(E) = 32 − 3 × 1 + 12 = 7 はミント素数だけど、成分が奇数だらけ。そこで上記のアイデアを使い、代わりに
F = −b + (a − b)ω = −1 + 2ω
を考えると、そのノルムは (−1)2 − (−1) × 2 + 22 = 7。同じミント素数 7 のまま。F = −1 + 2ω について、あらためて a = −1, b = 2 として ♥ を使うと…
(−1 − 2/2)2 + 3(2/2)2 = (−2)2 + 3 × 12 = 7
2乗される数の符号を無視すると、x2 + 3y2 = 7 の整数解は x = 2, y = 1。
イースター定理によって、任意のミント素数 p について、ノルム p のアイゼンシュタイン整数が存在。そのようなアイゼンシュタイン整数の中には、必ず ω の係数が偶数のものがあるので、それを使えば x2 + 3y2 = p の解が得られます。一方、「ノルムがワッフル素数」になるようなアイゼンシュタイン整数は存在しないので、p がワッフル素数なら x2 + 3y2 = p は解なし!
【結論】 p が 3k+1 型の素数(=ミント素数)か、または p = 3 なら、x2 + 3y2 = p は解を持つ。p がそれ以外の素数、つまり 3k+2型 の素数(=ワッフル素数)なら、x2 + 3y2 = p は解を持たない。
フェルマーは、これをゴチャゴチャ複雑に証明したようですが、アイゼンシュタイン整数の観点から見ると、何と明快でシンプルなのでしょう!
2022-05-02 目で見るアイゼンシュタイン整数(その12) 回転と単数
【1】 ω の偏角は120°、絶対値は1だから、複素数 z を ω 倍すると、絶対値は変わらずに偏角が120°増える。つまり複素平面上で、zω の位置は、z の位置を(原点を中心に)120°回転した場所。
−1 倍すれば、もちろん180°の回転(原点を挟んで正反対の位置になる)。
作図によると (1 + ω) 倍は60°の回転…。0°の方向に行きたい「0→1」ベクトルと、120°の方向に行きたい「0→ω」ベクトルを合成すれば、結果は、中間の60°の方向になるだろう。それをさらに180°回転させれば 60° + 180° = 240° の回転。もちろん ω 倍による120°回転を2度行うことでも、同じ結果(240° の回転)になる。
このことから、ω2 = −(1 + ω) をイメージ的・感覚的に理解できる。
【2】 以下では、アイゼンシュタイン整数 E = a + bω に話を限定する。アイゼンシュタイン整数同士の積はアイゼンシュタイン整数。±1, ±ω, ±ω2 もアイゼンシュタイン整数なので(例えば ω = 0 + 1ω)、アイゼンシュタイン整数を60°の整数倍回転させた結果は、再びアイゼンシュタイン整数になる。
ω2 = −1 − ω, ω3 = 1 の関係を利用しつつ、具体的に計算してみる:
回転角を180°ずらす計算は、単に符号を全部逆にしただけ。最後の式から分かることとして:
(○, △) の点、つまり ○ + △ω を60°回転させると (○−△, ○) になる。
〔例〕 (4, 1) = 4 + ω を60°回転させると (4−1, 4) = 3 + 4ω。
この (3, 4) をさらに60°回転させると (3−4, 3) = −1 + 3ω。
4 + ω は、図の原点から赤方向に4単位進んで、進行方向・左斜め後ろに(=黄緑と平行に、つまり ω と同じ120°の向きに)1単位進んだ点に当たる。
3 + 4ω は、それを60°ずらしたもの: 水色方向に4単位進んで、進行方向・左斜め後ろに(=赤と平行に)−1単位進んだ点に当たる。水色の1単位は 1 + ω なので 4(1 + ω) − 1 となる。
−1 + 3ω も同様。黄緑方向に4単位進んで、水色と平行に−1単位進んだ点に当たる: 4ω + (−1)(1 + ω)。
黄緑方向に4単位進んだ後で、「道がつながってるから」といって真横に1単位進んではいけない。考えているのと「合同」の動きをするためには、あくまで進行方向・左斜め後ろに、鋭角的なVターンをする必要がある。この場合で言えば、ひし形の短い対角線を横断する。
【3】 一般に、このようにして得られる6個の数は、互いに単数倍の違いにすぎず、因数分解の上では「本質的に同じ」と見なされる。ガウス整数において、±7, ±7i が本質的に同じ素因数とされるのと同じこと。ここで単数とは、1の約数を指す(例えば、普通の整数では 1 と −1 が単数)。
ω は 1 の立方根であり、ω3 = ω × ω2 = 1 を満たすのだから、ω と ω2 = −1 − ω は、アイゼンシュタイン整数の世界の単数。ω について言えば、1/ω = ω2 となって、1 は ω で割り切れる(つまり ω は1の約数)。同様に −1, −ω, −ω2 = 1 − ω も単数。結論から言えば…
{±1, ±ω, ±ω2} の 6個の数はアイゼンシュタイン整数の単数
…なのだが、この説明は「割り算してみれば確かに 1 を割り切るでしょ?」という場当たり的なもので、ちょっと歯切れが悪い。これ以外に単数はないと言い切れるのか?
この問題を厳密に解決するためには、「単数のノルムは1」ということ――何となく当たり前にも思えるが――を第一原理から証明し、ノルムの式を使って「ノルム1」の要素を過不足なく求めればいいだろう。
【4】 アイゼンシュタイン整数の世界がユークリッド整域であることは、既に分かっている。d 関数としては、単にノルムを使えばいい:
入力 X = a + bω を整数 a2 − ab + b2 に対応させる写像 norm(X)
について、定義域を 0 以外に制限する: d(X) = norm(X) ただし X ≠ 0。
定義域から 0 を除外する理由は、テクニカルな「裏事情」。norm(0) = 0 自体は、ちゃんと定義されるのだが、d(0) については、あえて定義しない。
ノルムには −ab という項があるが、a2 − ab + b2 が負になる可能性はない。なぜなら、次のように変形できる(実数の平方は負にならない):
a2 − ab + b2 = (a − b/2)2 + 3(b/2)2 ‥‥「は」
素朴に、算数的に考えても…。(i) a が b 以上なら、a2 ≥ ab なので a2 − ab は 0 以上。整数の2乗 b2 も 0 以上なので、それらの和は 0 以上。(ii) 同様に b が a 以上なら、b2 ≥ ab なので b2 − ab + a2 ≥ 0。概念的にも、この世界のノルムは絶対値(原点からの距離)の2乗だから、負にはならない。
では d-不等式 d(AB) ≥ d(A) は成り立つか。ノルムの性質上、もしも d(B) が1以上なら、
d(AB) = d(A) × d(B) は d(A) の1倍以上 つまり d(A) 以上
であり、d-不等式が成り立つ。ノルムは 0 以上の整数なので、この不等式が破れる可能性があるとすれば d(B) = 0 のケースに限られる。そうはならないこと、つまり d(B) ≠ 0 を示したい。
この場合、d(B) の値は絶対値の2乗 |B|2 なので B = 0 にならない限り d(B) ≠ 0。ところが、定義域から 0 を除外したのだから、もちろん B = 0 にはならない!
代数的に考えても、B = a + bω として「は」を使うと:
d(B) = 0 ⇔ (a − b/2)2 + 3(b/2)2 = 0
⇔ a − b/2 = 0 かつ b/2 = 0 ⇔ a = b = 0 ⇔ B = 0 + 0ω = 0
やはり B = 0 が d(B) = 0 の必要条件。0 は d の定義域に含まれていないので、この条件が満たされることはない。
単数の定義は「1の約数」なので、1 自身はもちろん単数(1は1で割り切れる)。単数1のサイズは:
d(1) = 1 ‥‥「ひ」
なぜなら d(1) = norm(1) = norm(1 + 0ω) = 12 − 1 × 0 + 02。
d-不等式の性質として(補助定理1「中編」「後編」):
B が単数の場合、そしてその場合に限って、d(AB) = d(A)。
この式で A = 1 とすると(従って AB = B)、アイゼンシュタイン整数 B = a + bω が単数である必要十分条件が得られる:
d(B) = d(1)
「は」「ひ」から、これは次と同値:
(a − b/2)2 + 3(b/2)2 = 1
分数が邪魔くさいので、両辺を4倍すると:
(2a − b)2 + 3b2 = 4 ‥‥「ふ」
「ふ」の左辺は 3b2 以上: b の絶対値が2以上なら、「ふ」の左辺は右辺よりはるかに大きい。だから「ふ」に解がある可能性は b = 0, b = 1, b = −1 の3パターンに限られる。
b = 0 なら「ふ」は (2a)2 = 4、つまり 4a2 = 4 となる。
従って a2 = 1 このとき a = ±1
b = 1 なら「ふ」は (2a − 1)2 + 3 = 4、つまり (2a − 1)2 = 1 となる。
従って 2a − 1 = ±1 このとき a = 1 or 0
b = −1 なら「ふ」は (2a + 1)2 + 3 = 4、つまり (2a + 1)2 = 1 となる。
従って 2a + 1 = ±1 このとき a = 0 or −1
まとめると、アイゼンシュタイン整数の世界には、ちょうど6個の単数がある。それらは:
b = 0 に対応して 1 + 0ω = 1 と −1 + 0ω = −1
b = 1 に対応して 1 + 1ω = 1 + ω と 0 + 1ω = ω
b = −1 に対応して 0 + (−1)ω = −ω と −1 + (−1)ω = −1 − ω
【5】 b = ±1 のケースで追加される4種の単数は、複素平面上で y = ±(√3)/2 という2本の横線上にある。仮に虚数の単位が j = (√−3) だとすると、これらの単数は存在し得ない: j/2 単位の係数を容認することで、世界の隙間に潜んでいた単数が「発見」される!
「j = (√−3) を添加するより、1 + ω = 1/2 + j/2 のような数を添加した方が良い」というのは、素朴に考えると、とても思い付けない。もっと先まで進めて試行錯誤を重ねた揚げ句「ここは、こうしておくべきだ」と気付く――そういう種類の事柄だろう。
仮に「中途半端な係数は嫌。きっちり整数だけがいい!」と考えて、普通の整数に j = (√−3) を添加したパラレルワールド ℤ[j] を考えると、どうなるか?
4 = 2 × 2 = (1 + j)(1 − j) ‥‥「へ」
のように、分解の一意性が破壊され、ℤ[j] はユークリッド整域どころか、一意分解整域になってくれない。いろいろな便利な性質を持つユークリッド整域と比べると、使い勝手が悪そうだ。フェルマーの最終定理の n=3 はもとより、拡張クリスマス定理の D=−3 の解決にも役立たないだろう。
ω = −1/2 + j/2 のような半整数の係数を含む数(しかも複素平面上で「斜め」の変な位置にある!)を「複素数の整数」の仲間に入れることは、直観に反するようだが、それによって「へ」のミステリーは、あっさり解決する:
1 + ω は単数なので、2 と 1 + j は単数倍の違いにすぎない。
2(1 + ω) = 2 × [1 + ½(−1 + √−3)] = 2 + (−1 + √−3) = 1 + (√−3) = 1 + j
−ω も単数なので、2 と 1 − j も単数倍の違いにすぎない。
2(−ω) = 2 × ½[1 − (√−3)] = 1 − (√−3) = 1 − j
アイゼンシュタイン整数の世界 ℤ[ω] では、2 × 2 と (1 + j)(1 − j) は本質的に同じ分解だが、ℤ[ω] の部分集合 ℤ[j] に世界を限定すると、同じことが言えない。その部分集合内には、単数が ±1 しかないので…。
ℤ[ω] ではなく ℤ[j] の範囲で考えることは、「整数全体の集合」ではなく「偶数全体の集合」を考えるようなもの。偶数の和・差・積は再び偶数になるので、「偶数の世界の数論」も構築可能だし、時には偶数の集合を考えることが役立つけど、一般論としては、やはり偶数全体より整数全体の方が便利だろう。
2022-05-03 目で見るアイゼンシュタイン整数(その13) 宝の地図の分析
【1】 「偏角0°以上60°未満」のエリアだけ探せば、全ての宝が見つかる。だって、60°単位の回転(原点を中心に)の結果が本質的に同じ(単数倍)なんだから、0°以上60°未満エリアで宝が1個見つかるごとに、それと本質的に同じ宝の場所6カ所で自動的に判明するじゃん: 見つかった場所に対して 0°, 60°, 120°, 180°, 240°, 300° の6種類の回転を行った位置で。
前回見たように、出発位置が分かれば、回転結果の位置はピンポイントで分かる。
言い換えると、偏角0°以上60°未満のエリア、60°以上120°未満のエリア、120°以上180°未満のエリア、等々は、宝の位置に関して「合同」。だから、どれか一つのエリアだけを探せば十分。
【2】 そればかりか、この60°のエリアにおいて、宝は、偏角30°の半直線(図のピンク)に対して対称の位置にペアで埋まっている(例: P と R)。
もっとも、ピンクの線上にある 2 + ω は特殊で、対称の位置が自分自身なので、ペアになる相手は自分自身…つまり、ペアといっても実質1個。
実数軸上(赤)にある 2, 5, 11, … つまり「普通の素数のうち、アイゼンシュタイン素数でもあるもの」も特殊な存在で、「ピンクに対して対称の位置にある相手」が水色の線上。水色は赤を60°回転させた位置なので、その「相手」は自分自身と本質的に同じ。「偏角0°以上60°未満」だけを探せばいい、という【1】の方針からしても、60°の線上は、もともと探す必要がない場所に当たる。
60°単位の回転が単数倍であることは分かっているが、ピンクに対する対称の位置の相手は、何者だろうか?
実数軸(赤)に対する対称の相手(例: P と Q)は、もちろん共役(実部が同じで、虚部の符号だけを逆にしたもの)。実は、問題の R は、この Q を60°回転させた位置にある。要するに、共役の単数倍!
確かめてみよう…。P = a + bω とすると、Q = conj(P) = (a − b) − bω だった。この Q に対して…
○ + △ω を60°回転させると (○−△) + ○ω
…という性質(その12【2】)を使うと:
○ = (a − b), △ = −b だから、結果は
[(a − b) − (−b)] + (a − b)ω = a + (a − b)ω ‥‥「甲」
一方、P から見てピンクと対称の位置 R の座標を直接求めると…。ピンクは、正三角形 OST を二等分する線。二等分の結果、合同な直角三角形が2個できる。「ピンクの線に対して対称の位置」とは、この合同な直角三角形の「青い底辺上の対応する位置」…。P は、赤方向に a 進んで S に達してから、青の上を ω 方向(120°)に b 進んだ地点。それと対称の R は、水色方向に a 進んで T に達してから、青の上を −ω 方向(−120°)に b 進んだ地点。…水色方向の1単位が 1 + ω だったことを思い出すと(1 方向と ω 方向の中間だから、ベクトルの合成が何ちゃらという話)、結局 R の座標は:
a(1 + ω) + b(−ω) = a + (a − b)ω ‥‥「乙」
「乙」は「甲」と同じなので、「ピンクに対する対称の位置」は「共役の単数倍」。
〔例〕 図の P は 6 + ω、つまり a = 6, b = 1。上の計算によると Q = 5 − ω, R = 6 + 5ω。この計算結果は、作図と一致する。