このページをはてなブックマークに追加このページを含むはてなブックマーク このページをlivedoor クリップに追加このページを含むlivedoor クリップ

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*目次 [#id2dd0a2]

#contents

*はじめに [#j59e7a50]

*2つの平方数の和 [#j7a2a902]
 x,yをZから選択し、2次式xSUP{2};+ySUP{2};の計算結果がどうなるか調べる。

[1]y=1のとき

|x|xSUP{2};+1SUP{2};|h
|1|1SUP{2};+1=2|
|2|2SUP{2};+1=5|
|3|3SUP{2};+1=10=2・5|
|4|4SUP{2};+1=17|

[2]y=2のとき

|x|xSUP{2};+2SUP{2};|h
|1|1SUP{2};+2SUP{2};=5|
|2|2SUP{2};+2SUP{2};=8=2SUP{3};|
|3|3SUP{2};+2SUP{2};=13|
|4|4SUP{2};+2SUP{2};=20=2SUP{2};・5|

[3]y=3のとき

|x|xSUP{2};+3SUP{2};|h
|1|1SUP{2};+3SUP{2};=10=2・5|
|2|2SUP{2};+3SUP{2};=13|
|3|3SUP{2};+3SUP{2};=18=2・3SUP{2};|
|4|4SUP{2};+3SUP{2};=25=5SUP{2};|

[3]y=4のとき

|x|xSUP{2};+4SUP{2};|h
|1|1SUP{2};+4SUP{2};=17|
|2|2SUP{2};+4SUP{2};=20=2SUP{2};・5|
|3|3SUP{2};+4SUP{2};=25=5SUP{2};|
|4|4SUP{2};+4SUP{2};=32=2SUP{5};|

 2次式の結果の中で素数のものを抽出すると次に示すものである。

{2,5,13,17}

 これらから偶素数の2を除くと、1型の素数(4で割ると1余る素数)になっている。すべての1型の素数が登場していることはわからないが、少なくとも17以下の1型の素数はすべて登場している。

 そこで、大胆にも次の予想を立ててみる。

#divid(s,thorem)
[予想]「p:2または1型の素数」⇔「∃x,y∈Z s.t. p=xSUP{2};+ySUP{2};」
#divid(e,thorem)

 素数pがp=xSUP{2};+ySUP{2};と表されるとき、p=ySUP{2};+xSUP{2};でもあるから、x≧yとしても一般性は失われない。
 それではpが2または1型の素数を満たす具体的な数値を考えて、このpがxSUP{2};+ySUP{2};、即ち平方の和で表現できることを確認する。

|p|xSUP{2};+ySUP{2};|h
|2|1SUP{2};+1SUP{2};|
|5|2SUP{2};+1SUP{2};|
|13|3SUP{2};+2SUP{2};|
|17|4SUP{2};+1SUP{2};|
|29|5SUP{2};+2SUP{2};|
|37|6SUP{2};+1SUP{2};|
|41|5SUP{2};+4SUP{2};|

 pが50以下のときには必ず予想が成り立つことがわかった。

*2つの平方数の和(2平方和) [#j7a2a902]

#divid(s,thorem)
[定理][[自然数]]nが2つの平方数の和となるための必要十分条件は、n=nSUB{1};SUP{2};nSUB{2};(nSUB{2};は4を法として、3と合同な素因数を持たない)と表せることである。~
ただし、nSUB{1};,nSUB{2};は自然数である。
#divid(e,thorem)

#divid(s,proof)
[証明]まず、[[ウィルソンの定理]]「(p-1)!≡-1 (mod p)」が成り立つことを使う。

次に、[定理]「pが1型の素数ならば、xSUP{2};≡-1を満たす整数xが存在する」という事実を使う。

また、「pが1型の素数ならば、p=xSUP{2};+ySUP{2};と表せる」かつ「a,bを2つの平方数の和とすれば、abは2つの平方数の和である」が成り立つので、n=nSUB{1};SUP{2};nSUB{2};でnSUB{2};は4を法として3に合同な素因数を持たないならば、nは2つの平方数の和で表される。

「pが3型の素数ならば、xSUP{2};≡-1 (mod p)を満たす整数xは存在しない」(これは[[元の位数]]の性質と[[フェルマーの小定理]]より証明できる)が成り立つので、n=nSUB{1};SUP{2};nSUB{2};(nSUB{2};は4を法として3に合同な素因数を持たない)を表せないならば、nは2つの平方数の和ではない。 □
#divid(e,proof)

#divid(s,notice)
[例]n=90に上記の定理を適用する。

90=2×3SUP{2};×5なので、nSUB{1};=3,nSUB{2};=2×5とすれば、n=nSUB{1};SUP{2};nSUB{2};が成り立つ。

よって、90は2つの平方数の和となるとわかる。

実際には90=3SUP{2};+9SUP{2};が成り立つ。 ◇
#divid(e,notice)

*ディオフォントスの考察 [#pe025992]

 ディオフォントスの『数論』第3巻の問題19は、「2つの平方数の和として4通りに表されるような平方数を見つけよ」という問題である。これが文献として残っている、2つの平方数の和に関する最初の考察である。

 2組のピタゴラス数(3,4,5),(4,12,13)の一方に他方の斜辺を掛ける。即ち、(3,4,5)に13を掛け、(4,12,13)に5を掛ける。すると、(39,52,65),(25,60,65)を得る。

 よって、平方数65SUP{2};は2つの平方数の和として、2通りに書けることがわかる。

&mimetex("39^2 + 52^2 = 25^2 + 60^2 = 65^2");~
(&mimetex("(13 \cdot 5)^2 + (13 \cdot 4)^2 = (13 \cdot 5)^2, (5 \cdot 5)^2 + (5 \cdot 12)^2 = (5 \cdot 13)^2");)

 一方、65自身、次のように、2つの平方数の和として2通りに書くことができる。

65=1SUP{2};+8SUP{2};=4SUP{2};+7SUP{2}; ←(*)

 1と8、4と7からそれぞれ[[ピタゴラス数]]は次のように作ることができる(m>n、k=1とした)。

-m=8,n=1のとき
--(a,b,c)=(mSUP{2};-nSUP{2};,2mn,mSUP{2};+nSUP{2};)=(63,16,65)
-m=7,n=4のとき
--(a,b,c)=(mSUP{2};-nSUP{2};,2mn,mSUP{2};+nSUP{2};)=(33,56,65)

 よって、平方数65SUP{2};は2つの平方数の和として、2通りに書けることがわかる。

&mimetex("63^2 + 16^2 = 33^2 + 56^2 = 65^2");

 以上より、平方数65SUP{2};は2つの平方数の和として、4通りに書けることがわかる。

&mimetex("65^2 = 39^2 + 52^2 = 25^2 + 60^2 = 63^2 + 16^2 = 33^2 + 56^2");

 ディオフォントスはこのように具体的な数字を使って議論を進めているが、この仮定を文字記号で書くと次のようになる。

 ディオフォントスは(*)に関して「これは65が13と5の積であり、13と5の各々が2つの平方数の和であるという事実に基づいている」と書いている。つまり、ディオフォントスは次の結果を知っていたといえる。

#divid(s,thorem)
[命題]自然数aとbが両方とも2つの平方数の和であるなら、積abも2つの平方数の和である。
[定理]&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");
#divid(e,thorem)

 両辺を展開すれば、この定理が成り立つことがわかるが、それでは本質をわかったことにはならない。

#divid(s,proof)
[証明]z=x+iy,w=u+ivとおいて、&mimetex("z \bar{z} w \bar{w}");を次の3通りで計算する。

-&mimetex("z \bar{z} w \bar{w}=(z \bar{z})(w \bar{w})=(x^2+y^2)(u^2+v^2)");
-&mimetex("z \bar{z} w \bar{w}=(zw)(\bar{zw})=(xu-yv)^2+(xy+uv)^2"); (∵&mimetex("zw=(xu-yv)+i(xv+yu),\bar{zw}=(xu-yv)-i(xu+yu)");)
-&mimetex("z \bar{z} w \bar{w}=(z\bar{w})(\bar{z}w)=(xu+yv)^2 + (xu-yu)^2"); (∵&mimetex("z\bar{w}=(xu+yv)^2-i(xv-yu),\bar{z}w=(xu+yv)+i(xv-yu)");)

これで題意が示された。 □
#divid(e,proof)

 ディオフォントスが例として使った数5や13は、1型(4n+1の形)の素数である。~
 これは偶然ではなく、素数を2つの平方数の和として表すための必要十分条件であることが背景にある。

#divid(s,thorem)
[系]一般に2つの平方数の和として書ける自然数SUB{1};,…,mSUB{n};をいくつかけても2つの平方数の和として書ける。
#divid(e,thorem)

#divid(s,proof)
[証明]上記の定理により、一般に2平方数和として書ける自然数mSUB{1};,mSUB{2};の積mSUB{1};mSUB{2};は2平方数和として表される(&mimetex("m_1=x^2 + y^2, m_2=u^2 + v^2)");)。

このmSUB{1};mSUB{2};をmSUB{3};(2平方和)と考え、別の2平方和mSUB{4};の積を考えると、上記の定理が適用できる。よって、その積も2平方和である。

よって、そのような自然数mSUB{1};,…,mSUB{n};をいくつかけても2つの平方数の和として書ける。 □
#divid(e,proof)


*2平方和と3型の数 [#c5b33dc3]

 ディオフォントスは『数論』の第5巻の問題9では、4n-1の形、即ち4n+3(3型)の数は2つの平方数の和として書けないと述べている。

#divid(s,thorem)
[定理]4n-1の形の整数は2つの平方数の和として表すことができない。
#divid(e,thorem)

#divid(s,proof)
[証明]

-偶数2kを2乗すると、4kSUP{2};≡0 (mod 4)
-奇数2l+1を2乗すると、4lSUP{2};+4l+1≡1 (mod 4)

2つの整数の2乗の和は4を法とすると、0(=0+0),1(=0+1),2(=1+1)のどれかに限る。~
即ち、2つの平方数の和は、4n,4n+1,4n+2の形のどれかであり、4n+3の形、即ち4n-1の形にはならない。 □
#divid(e,proof)

 上記の結果を使うと、メルセンヌ数は2つの平方数の和として書けないことがすぐにわかる。

#divid(s,thorem)
[定理]メルセンヌ数&mimetex("M_n=2^n - 1,(n \ge 2)");は2つの平方数の和として書けない。
#divid(e,thorem)

#divid(s,proof)
[証明]&mimetex("M_n=2^n - 1=4 \cdot 2^{n-2} - 1");に対して、上記の結果を適用する。 □
#divid(e,proof)

*素数の2平方数和 [#yf4037c6]

#divid(s,thorem)
[定理]pを4n+1の形の素数とすると、pは次のように2つの平方数として表される。~
&mimetex("p=a^2+b^2");~
そして、このような表し方は1通りしかない。
#divid(e,thorem)

#divid(s,proof)
[証明](フェルマー)

a,bの存在の証明を2段階に分ける。

[1]適当な自然数k<pを取れば、次の方程式は解を持つことを示す。

xSUP{2};+ySUP{2};=kp ←(**)

[定理]「「p:1型の素数」⇒「&mimetex("((\frac{p-1}{2})!)^2 \equiv -1 \, \pmod{p}");」」によれば、次のように展開できる。

&mimetex("((\frac{p-1}{2})!)^2 \equiv -1 \, \pmod{p}"); ←(**)~
&mimetex("((\frac{p-1}{2})!)^2 +1 \equiv 0 \, \pmod{p}");~
&mimetex("mp+r \equiv 0 \, \pmod{p}"); (∵&mimetex("(\frac{p-1}{2})!");をpで割った余りをrとする)~
&mimetex("r \equiv 0 \, \pmod{p}");

0<r<pであるから、次の2通りに分けられる。

-&mimetex("r \le \frac{p-1}{2}");のとき、xSUB{0};=rとおく。
-&mimetex("r > \frac{p-1}{1}");のとき、xSUB{0};=r-pとおく。
--このとき、&mimetex("\frac{-p+1}{2} < x_0 < 0");が成り立つ。

いずれの場合にしても、次が成り立つ。

&mimetex("|x_0| \le \frac{p-1}{2}, (\frac{p-1}{2})! \equiv r \equiv x_0 \, \pmod{p}");~
&mimetex("r^2 \equiv {x_0}^2 \, \pmod{p}"); (∵両辺を2乗した)
&mimetex("{x_0}^2 + 1\equiv 0 \, \pmod{p}"); (∵(**)より)~
&mimetex("{x_0}^2 + 1 =kp");

ここでySUB{0};=1とおけば、x=xSUB{0};,y=ySUB{0};が(*)の解となる。

左辺が正だから、整数kも正である。

また、&mimetex("|x_0| \le \frac{p-1}{2}");より、次のように展開できる。

&mimetex("kp \le (\frac{p-1}{2})^2 + 1 \le p^2");~
&mimetex("k < p");

(p≧5だから、&mimetex("kp < \frac{(p-1)p}{2}");となり、&mimetex("k < \frac{p-1}{2}");を得ることができるが、ここではk<pで十分である)

k=1のときは明らかなので、k>1のときでも成り立つことを証明する

[2]一般に(*)の解、即ち(x,y)=(xSUB{0};,ySUB{0};)が与えられたときに(&mimetex("{x_0}^2 + {y_0}^2=kp, 1<k<p");を満たす)、kより小さい適当なk'(s.t. 0<k'<k)をとれば、&mimetex("{x_1}^2 + {y_1}^2=k'p");となるようなxSUB{1};,ySUB{1};があることを示す。

xSUB{0};をkで割ったときの余りをrとする。

-&mimetex("r \le \frac{k}{2}");のとき、u=rとおく。
-&mimetex("r > \frac{k}{2}");のとき、u=r-kとおく。

よって、次が成り立つ。

&mimetex("x_0 = ck+u, |u| \le \frac{k}{2}"); ←(***)

同様に、ySUB{0};をkで割ると、次が成り立つ。

&mimetex("y_0 = dk+v, |v| \le \frac{k}{2}"); ←(****)

(***),(****)を2乗して和を取れば、kを法として次が成り立つ。

&mimetex("u^2+v^2 \equiv {x_0}^2 + {y_0}^2 \equiv 0 \, \pmod{k}");

よって、uSUP{2};+vSUP{2};はkで割り切れる。

また、&mimetex("u^2 + v^2 \le (\frac{k}{2})^2 + (\frac{k}{2})^2 = \frac{k^2}{2}");だから、&mimetex("k' = \frac{u^2 + v^2}{k}");と定義したときに、k'<kが成り立つ。

次に、[定理]「&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");」を用いて、次のように変形できる。

&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");~
&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu + yv)^2 + (xv - yu)^2");~
&mimetex("({x_0}^2 + {y_0}^2)(u^2 + v^2)=({x_0}u + {y_0}v)^2 + ({x_0}v - {y_0}u)^2"); (∵(x,y)=(xSUB{0};,ySUB{0};))~
&mimetex("({x_0}^2 + {y_0}^2)kk'=({x_0}u + {y_0}v)^2 + ({x_0}v - {y_0}u)^2"); (∵&mimetex("k' = \frac{u^2 + v^2}{k}");より、&mimetex("u^2 + v^2 = kk'");)~
&mimetex("k^2 k'p=({x_0}u + {y_0}v)^2 + ({x_0}v - {y_0}u)^2"); (∵&mimetex("{x_0}^2 + {y_0}^2=kp");) ←(*****)

一方、

&mimetex("x_0 u + y_0 v");~
&mimetex("=x_0(x_0 - ck) +y_0(y_0 -dk)"); (∵(***),(****)より、&mimetex("u = x_0 -ck, v=y_0 - dk");)~
&mimetex("\equiv {x_0}^2 + {y_0}^2 \, \pmod{k}"); (∵&mimetex("x_0(x_0 - ck) +y_0(y_0 -dk) \equiv {x_0}^2 + {y_0}^2");)~
&mimetex("\equiv 0 \, \pmod{k}"); (∵&mimetex("{x_0}^2 + {y_0}^2=kp");)

&mimetex("x_0 v - y_0 u");~
&mimetex("=x_0(y_0 - dk) -y_0(x_0 -ck)"); (∵(***),(****)より、&mimetex("u = x_0 -ck, v=y_0 - dk");)~
&mimetex("\equiv x_0 y_0 -y_0 (x_0) \, \pmod{k}");~
&mimetex("\equiv 0 \, \pmod{k}");

このように、&mimetex("x_0 u + y_0 v,x_0 v - y_0 u");は共にkで割り切れるから、次のようにxSUB{1};,ySUB{1};を定義する。

&mimetex("x_1=\frac{x_0 u + y_0 v}{k},x_2=\frac{x_0 v - y_0 u}{k}");

すると、&mimetex("{x_1}^2 + {y_1}^2");は次のように展開できる。

&mimetex("{x_1}^2 + {y_1}^2");~
&mimetex("=(\frac{x_0 u + y_0 v}{k})^2 + (\frac{x_0 v - y_0 u}{k})^2"); (∵&mimetex("x_1=\frac{x_0 u + y_0 v}{k},x_2=\frac{x_0 v - y_0 u}{k}");)~
&mimetex("=\frac{(x_0 u + y_0 v)^2 + (x_0 v - y_0 u)^2}{k^2}");~
&mimetex("=\frac{k'k^2 p}{k^2}"); (∵(*****)より)~
&mimetex("=k'p");

もし、k'>1ならば、同様にして、適当な0<k''<k'に対して、&mimetex("{x_2}^2 + {y_2}^2=k''p");となるようなxSUB{2};,ySUB{2};が存在する。~
これを続けるといつかxSUP{2};+ySUP{2};=pの解に到達する(フェルマーの無限降下法)。

[3]定理の条件を満たす解a,b(>0)が1組しかないことを示す。

&mimetex("x^2 + y^2 = u^2 + v^2 = p, (x,y,u,v>0)"); ←(******)

上記のようにしたときに、(x,y)=(u,v) or (v,u)となることを示せばよい。


&mimetex("pv^2 - py^2");~
&mimetex("=(x^2+y^2)v^2 - (u^2 + v^2)y^2"); (∵(******))~
&mimetex("=x^2 v^2 + y^2 v^2 - u^2 y^2 - v^2 y^2");~
&mimetex("=x^2 v^2 - u^2 y^2");~
&mimetex("=(xv+yu)(xv-yu)");

ここで、明らかに&mimetex("p|pv^2 - py^2");であるので、&mimetex("p|xv+yu \, or \, p|xv-yu");である。

そのため、[定理]「&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");」の右辺の第2項&mimetex("(xv \mp yu)^2");の符号をどちらかを選べばpSUP{2};で割り切れる。~
左辺は(******)より、pSUP{2};に等しい。~
よって、右辺の第1項もpSUP{2};で割り切れる。~
そこで、次のように展開できる。

&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");~
&mimetex("p^2=(xu \pm yv)^2 + (xv \mp yu)^2");~
&mimetex("1=\frac{(xu \pm yv)^2}{p^2} + \frac{(xv \mp yu)^2}{p^2}");

この右辺の第1項も第2項もそれぞれ整数(になるように符号を選ぶ)なので、第1項・第2項の一方が0、他方が1である。

(i)&mimetex("\frac{(xu \pm yv)^2}{p^2} =0");の場合

&mimetex("xv = \pm yu");~
&mimetex("x^2 v^2 = y^2 u^2"); (∵両辺を2乗する)~
&mimetex("x^2 v^2 + x^2 u^2 = y^2 u^2 + x^2 u^2"); (∵両辺にxSUP{2};uSUP{2};を加える)~
&mimetex("x^2 (v^2 + u^2) = u_2(y^2 + x^2)");~
&mimetex("x^2 = u^2"); (∵&mimetex("x^2 + y^2 = u^2 + v^2");)
&mimetex("x=u"); (∵x,u>0)

また、xv=yuなので、y=vである。

(ii)&mimetex("\frac{(xv \mp yu)^2}{p^2} =0");の場合

&mimetex("xv = \pm yu");~
&mimetex("x^2 v^2 = y^2 u^2"); (∵両辺を2乗する)~
&mimetex("x=u"); (∵(i)と同じ議論)~

また、xv=yuなので、y=vである。 □
#divid(e,proof)

**有理素数の2平方和表現 [#j75eaf0d]

 Z上の素数とZ[i]上の素数を区別するために、Z上の素数を「有理素数」と呼ぶことにする。単に素数と呼ぶときは、Z[i]上の素数である(もしZ[i]の存在がまったく関係ない話のときはZ上の素数を意味する)。~
 よって、今回の目的の「2または1型の素数が2つの平方数の和で表現できること」というのは「2または1型の有理素数が2つの平方数の和で表現できること」と言い換えることができる。

 「2または1型の有理素数が2つの平方数の和で表現できること」を示すために、次の補題を利用する。

#divid(s,thorem)
[補題]p:有理奇素数とする。~
(1)p:3型の有理素数⇒p:Z[i]の素数~
(2)p:1型の有理素数⇒「∃π∈Z[i]かつ素数 s.t. N(π)=p」
#divid(e,thorem)

 今回はこの補題の(2)を証明に用いる。~
 それではこの補題が成り立つと仮定して、目的の定理を証明する。

#divid(s,thorem)
[定理]~
(1)有理素数2は2つの平方数の和2=1SUP{2};+1SUP{2};で表せる。~
(2)「有理奇素数pは2つの平方数の和p=aSUP{2};+bSUP{2};に表せる」⇔「p:1型の素数」
#divid(e,thorem)

#divid(s,proof)
[証明](1)は自明なので、(2)を証明する。

[1]⇒を示す。

 pが有理奇素数より、aSUP{2};かbSUP{2};のどちらかは奇数になる。つまり、aかbのどちらかは奇数になる。~
 ここでaを奇数、bを偶数とする。a=2m+1,b=2n(m,n∈Z)とおく。

p=aSUP{2};+bSUP{2};~
=(2m+1)SUP{2};+(2n)SUP{2};~
=4mSUP{2};+4m+1+4nSUP{2}~
≡1 (mod 4)

[2]←を示す。

 pが1型の有理素数のとき、補題の(2)より「∃π∈Z[i]かつ素数 s.t. N(π)=p」が成り立つ。

&mimetex("p");~
&mimetex("=N(\pi)");~
&mimetex("= \pi \cdot \bar{\pi}");~
&mimetex("= (a+ib)(a-ib)"); (∵π=a+ibとおいた)~
&mimetex("=a^2+b^2"); □
#divid(e,proof)

#divid(s,notice)
[補講]具体的な数値例で確かめてみる。p=13という有理素数を2つの平方の和で表現したいとする。

 [[第1補充法則]]より、(-1/13)=1が成り立つ。つまり、-1∈QRSUB{13};である。即ち、xSUP{2};≡-1 (mod 13)を満たすxが存在する。即ち、xSUP{2};+1≡0 (mod 13)を満たすxが存在する。

 また、第2補充法則より、(2/13)=-1が成り立つ。また[[オイラー基準]]より(2/13)=2SUP{{(13-1)/2}};=2SUP{6}; (mod 13)が成り立つ。この2つの式をまとめると2SUP{6};≡-1 (mod 13)となり、次のように展開できる。

2SUP{6};≡-1 (mod 13)~
⇔8SUP{2};≡-1 (mod 13)~
⇔8SUP{2};+1≡0 (mod 13) ←x=8のときにx^2+1≡0 (mod 13)を満たしている。~
⇔8SUP{2};+1SUP{2};≡0 (mod 13)~
⇔8SUP{2};+1SUP{2};=13・5 ←(*)

 今p=13で考えているため、上記の式の右辺の因数5が消えてくれれば、目的を果たしたことになる。

 mod 5の世界で8と1と一致する数を考える。ただし、範囲は(0,5)ではなく、(-5/2,5/2)とする。

-8≡-2 (mod 5),-5/2<-2<5/2
-1≡1 (mod 5),-5/2<1<5/2

 右辺の-2と1を選び、(-2)SUP{2};+1SUP{2};=5が成り立つ。 ←(**)

 (*)(**)の各々の両辺を掛け合わせると、次のようになる。

(8SUP{2};+1SUP{2};)((-2)SUP{2};+1SUP{2};)=13・5SUP{2};~
⇔10SUP{2};+15SUP{2};=13・5SUP{2}; (∵(aSUP{2};+bSUP{2};)(cSUP{2};+dSUP{2};)=(ad-bc)SUP{2};+(ac+bd)SUP{2};)~
⇔2SUP{2};+3SUP{2};=13 (∵両辺を5SUP{2};で割った)~
⇔2SUP{2};+3SUP{2};=p ◇
#divid(e,notice)

***有理素数の2平方和表現のアルゴリズム [#i71b9d9c]

 有理素数が与えられたときに、有理素数の2平方和表現を得るためのアルゴリズムを紹介する。アルゴリズムの流れはp=13のときの実例の流れと基本的に同じである。

 pを1型の有理素数とする。~
 [[第1補充法則]]より、xSUP{2};+1≡0 (mod p)を満たすx(1<x<p/2)が存在する。

xSUP{2};+1≡0 (mod p)~
⇔xSUP{2};+1SUP{2};≡0 (mod p)~
⇔xSUP{2};+1SUP{2};=pk (k<p) ←(*)

 ここでkが邪魔だから消したい。~
 もし「xSUP{2};+ySUP{2};=pk (k>1)(←(*))に対して、zSUP{2};+wSUP{2};=pt (t<k)を満たすz,wが存在する」ならば、これを繰り返すことにより新たな邪魔な係数が小さくなっていき、いつかは邪魔な係数が消えて、○SUP{2};+△SUP{2};=pの形になることが期待できる(これを無限降下法という)。~
 そこで、「xSUP{2};+ySUP{2};=pk (k>1)(←(*))に対して、zSUP{2};+wSUP{2};=pt (t<k)を満たすz,wが存在する」を示す。

-x≡u (mod k),-k/2<u≦k/2 ←(i)
-y≡v (mod k),-k/2<v≦k/2 ←(ii)

 上記を満たすu,vは、次を満たす。

uSUP{2};+vSUP{2};≡xSUP{2};+ySUP{2}; (mod k)~
⇔uSUP{2};+vSUP{2};≡0 (mod k) (∵(*))~
⇒uSUP{2};+vSUP{2};≦(kSUP{2};)/2 (∵(i),(ii))~
⇔uSUP{2};+vSUP{2};=kt, t≦k/2 ←(**)

 (*)(**)を各々の辺を掛け合わせると、次のようになる。

(xSUP{2};+ySUP{2};)(uSUP{2};+vSUP{2};)=pkSUP{2};t
⇔(xv-yu)SUP{2};+(xu+yv)SUP{2};=pkSUP{2};t (∵(aSUP{2};+bSUP{2};)(cSUP{2};+dSUP{2};)=(ad-bc)SUP{2};+(ac+bd)SUP{2};)
⇔kSUP{2};zSUP{2};+kSUP{2};wSUP{2};=pkSUP{2};t (∵xv-yu≡xy-yx≡0 (mod k)より、xv-yu=kzとおいた。同様にxu+yv=kwとおいた)
⇔zSUP{2};+wSUP{2};=pt, t≦k/2

 p=13のときは(*)を1度だけ適用しただけで、2平方和に表現できた。pが大きくなっても、(*)を繰り返して実行すればいつかは2平方和に表現できる。


*一般の自然数の2平方和 [#q76ad677]

 一般の自然数NをN=aSUP{2};+bSUP{2};と表す問題を考える。ただし、a or bが0でもよい。

#divid(s,thorem)
[定理]与えられた自然数Nを素因数分解して次のように書く。~
&mimetex("N=2^e {p_1}^{e_1} \cdots {p_k}^{e_k} {q_1}^{f_1} \cdot {q_l}^{f_l}"); ←(*)~
ここで、各pSUB{i};は4n+1の形の素数(1型の素数)、qSUB{j};は4n-1の形の素数(3型の素数)とする。~
そのとき、この自然数が2つの平方数の和として書けるための必要十分条件は、べきfSUB{i};,…,fSUB{l};が偶数であることである。
#divid(e,thorem)

#divid(s,proof)
[証明]

[1]←を示す。

Nの素因数分解で、2は2=1SUP{2};+1SUP{2};のように2平方和で書ける。

また、[定理]「pを4n+1の形の素数とすると、pは次のように2つの平方数として表される。~
&mimetex("p=a^2+b^2");~
そして、このような表し方は1通りしかない」により、pSUB{i};は2平方和で書ける。

さらに、fSUB{j};が偶数ならば、&mimetex("{q_j}^{f_j}");は平方数だから、&mimetex("{q_j}^{f_j}");も2つの平方数(片方は0)の和である。

したがって、[系]「一般に2つの平方数の和として書ける自然数SUB{1};,…,mSUB{n};をいくつかけても2つの平方数の和として書ける」より、fSUB{1};,…,fSUB{l};がすべて偶数なら、与えられた自然数Nは2平方和として表される。

[2]⇒を示す。

少なくとも1つのfSUB{j};が奇数であると仮定する。

簡単のために、そのfSUB{j};をf、qSUB{j};をqと書くことにする。

(*)において、qSUP{f};以外の因子の積をmと書くことにすれば、(*)はN=qSUP{f};mとなる。

これが2平方和として、次のように書けるようにして矛盾を導く。

&mimetex("q^f m = x^2+y^2"); ←(**)

ただし、(**)の両辺をqの偶数べきで約せるだけ約しておく。

fは奇数なので、f≧1である。~
よって、(**)の左辺は常にqで割れる。

ここで&mimetex("q \not{|} x, q \not{|} y");を示したい。~
そこで、&mimetex("q | x, q | y");と仮定して、矛盾を示す。

-q|xならば、q|y、つまり、qSUP{2};|ySUP{2};
-q|yならば、q|x、つまり、qSUP{2};|xSUP{2};

そのため、(**)の左辺はqSUP{2};で割れる。~
しかし、(**)はこれ以上qSUP{2};では約せないはずだったので、矛盾する。

したがって、&mimetex("q \not{|} x, q \not{|} y");である。

(**)により、次が成り立つ。

&mimetex("x^2 \equiv -y^2 \, \pmod{q}");~
&mimetex("x^{2(2n-1)} \equiv -y^{2(2n-1)} \, \pmod{q}"); (∵両辺を2n-1乗した)~
&mimetex("x^{q-1} \equiv -y^{q-1} \, \pmod{q}"); (∵q=4n-1の形をしているので、&mimetex("q-1=2(2n-1)");)

しかし、フェルマーの小定理より、&mimetex("x^{q-1} \equiv 1 \equiv y^{q-1} \, \pmod{q}");が成り立つので、上記と矛盾する。

ゆえに、(**)のように書くことはできない。~
つまり、「少なくとも1つのfSUB{j}が奇数であるならば、2平方和で表すことができない」ことが成り立つ。

これの対偶を取ると、「2平方和で表すことできるならば、すべてのfSUB{j};は奇数ではない(即ち偶数)」が成り立つ。 □
#divid(e,proof)

#divid(s,notice)
[例]&mimetex("168480 = 2^5 \cdot 3^4 \cdot 5 \cdot 13=(2^2 \cdot 3^2)^2 \cdot (2 \cdot 5 \cdot 13)");より、平方数(2SUP{2};・3SUP{2};)SUP{2};と2・5・13=130の積に書き直せる。

ここで、5,13はいずれも1型の素数であるので、上記の定理におけるpSUB{i};に該当する。~
また、3は3型の素数なので、上記の定理におけるqSUB{j};に該当する。~
さらに、3の指数fは偶数である。~
そのため、168480は上記の定理のNの素因数分解の形を満たすので、2平方和と書けることはずである。

また、130は130=11SUP{2};+3SUP{2};=9SUP{2};+7SUP{2};のように表すことができる。

よって、次が成り立つ。

-&mimetex("168480 =(2^2 \cdot 3^2)^2 \cdot 130=(2^2 \cdot 3^2)^2 \cdot (11^2+3^2)=(2^2 \cdot 3^2 \cdot 11)^2 + (2^2 \cdot 3^2 \cdot 3)^2");
-&mimetex("168480 =(2^2 \cdot 3^2)^2 \cdot 130=(2^2 \cdot 3^2)^2 \cdot (9^2 + 7^2)=(2^2 \cdot 3^2 \cdot 9)^2 + (2^2 \cdot 3^2 \cdot 7)^2");

以上より、168480が2平方和で書け、しかも2通りで表現できることがわかった。 ◇
#divid(e,notice)

 上記の例のように、一般の自然数Nを2平方和とする表し方はいくつもある。

#divid(s,thorem)
[定理]N=aSUP{2};+bSUP{2};は自然数、p=xSUP{2};+ySUP{2};は素数でNの約数であるとすると、適当なu,vにより、次のように書ける。~
&mimetex("\frac{N}{p}=u^2+v^2, a^2 = (xu+yv)^2, b^2=(xv-yu)^2");
#divid(e,thorem)

#divid(s,proof)
[証明][定理]「&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");」に、N=aSUP{2};+bSUP{2};とp=xSUP{2};+ySUP{2};を適用すると次が成り立ち、2通りに表せる。

&mimetex("Np = (a^2+b^2)(x^2+y^2) = (ax \pm by)^2 + (ay \mp bx)^2"); ←(*)

また、&mimetex("Ny^2 - b^2 p");は次のように展開できる。

&mimetex("Ny^2 - b^2 p");~
&mimetex("= (a^2+b^2)y^2 - b^2(x^2+y^2)"); (∵N=aSUP{2};+bSUP{2};、p=xSUP{2};+ySUP{2};より)~
&mimetex("= a^2y^2+b^2y^2 - b^2x^2+b^2y^2");~
&mimetex("= a^2y^2 - b^2x^2");~
&mimetex("= (ay-bx)(ay+bx)");

pはNの約数であるので、&mimetex("Ny^2 - b^2 p");はpで割り切れる。~
よって、pは素数なので、pはay-bx or ay+bxの少なくとも一方を割り切る。

(*)の右辺の第2項がpで割り切れるように符号を選ぶ。~
(*)の左辺は当然pで割り切れるので、右辺の第1項もpで割り切れる。~
よって、整数u,vを使って、次のように書ける(そのように符号を選んだ)。

-&mimetex("ax \pm by = pu"); ←(**)
-&mimetex("ay \mp bx = pv"); ←(***)

これを(*)に代入すると、次のようになる。

&mimetex("Np = (pu)^2 + (pv)^2");~
&mimetex("\frac{N}{p} = u^2 + v^2"); (∵両辺をpSUP{2};で割った)

また、(**),(***)をa,bの未知数とする連立方程式として解く。

-&mimetex("ax^2 \pm bxy = pxu"); (∵x倍する)
-&mimetex("ay^2 \mp bxy = pyv"); (∵y倍する)

この2式の和を取ると、次のようになる。

&mimetex("ax^2 + ay^2 \pm bxy \mp bxy= pux +  pvy");
&mimetex("ax^2 + ay^2 = pux +  pvy");~
&mimetex("a(x^2 + y^2) = p(xu +  yv)");~
&mimetex("ap = p(xu +  yv)"); (∵p=xSUP{2};+ySUP{2};)~
&mimetex("a = xu +  yv");

また、(**),(***)をa,bの未知数とする連立方程式として解く。

-&mimetex("axy \pm by^2 = pyu"); (∵y倍する)
-&mimetex("axy \mp bx^2 = pvx"); (∵x倍する)

この2式の差を取ると、次のようになる。

&mimetex("axy \pm by^2 - axy \pm bx^2 = pyu - pvx");~
&mimetex("\pm by^2 \pm bx^2 = pyu - pvx");~
&mimetex("\pm b(y^2 + x^2) = p(yu - vx)");~
&mimetex("\pm bp = p(yu - vx)"); (∵p=xSUP{2};+ySUP{2};)~
&mimetex("\pm b = yu - vx");~
&mimetex("b = \mp (yu - vx)"); □
#divid(e,proof)

#divid(s,notice)
[補講]N=aSUP{2};+bSUP{2};は、p=xSUP{2};+ySUP{2};と&mimetex("\frac{N}{p}=u^2+v^2");から、[定理]「&mimetex("(x^2 + y^2)(u^2 + v^2)=(xu \pm yv)^2 + (xv \mp yu)^2");」から得られる。 ◇
#divid(e,notice)

#divid(s,notice)
[補講]この定理を使うことで、与えられた自然数Nの2平方和の形の表し方をすべて決めるのは、原則的に可能である。 ◇
#divid(e,notice)

 2平方和の表し方が何通りあるかについては、ガウスが次の結果を得ている。

#divid(s,thorem)
[定理]与えられた自然数Nを素因数分解して次のように書く。~
&mimetex("N=2^e {p_1}^{e_1} \cdots {p_k}^{e_k} {q_1}^{f_1} \cdot {q_l}^{f_l}"); ←(*)~
ここで、各pSUB{i};は4n+1の形の素数(1型の素数)、qSUB{j};は4n-1の形の素数(3型の素数)とする。~
[1]eSUB{1};,…,eSUB{k};の少なくとも1つが奇数の場合、&mimetex("\frac{1}{2}(e_1+1)(e_2+1)\cdots(e_k+1)");通りの2平方和で表すことができる。~
[2]eSUB{1};,…,eSUB{k};がすべて偶数の場合、&mimetex("\frac{1}{2}(e_1+1)(e_2+1)\cdots(e_k+1)+\frac{1}{2}");通りの2平方和で表すことができる。
#divid(e,thorem)

 なお、fSUB{1};,…,fSUB{l}はすべて偶数である。なぜならば、偶数でないと2平方和に表すことができないからである(証明済み)。

#divid(s,notice)
[補講]

[1]25=5SUP{2};のとき

定理より、&mimetex("\frac{1}{2}(e_1+1)+\frac{1}{2}=\frac{1}{2}(2+1)+\frac{1}{2}=2");通りの2平方和で表すことができる。

&mimetex("25 = 3^2+4^2=5^2+0^2");

[2]125=5SUP{3};のとき

定理より、&mimetex("\frac{1}{2}(e_1+1) = \frac{1}{2}(3+1) = 2");通りの2平方和で表すことができる。

&mimetex("125 = 2^2+11^2=5^2+10^2");

[3]325=5SUP{2};・13のとき

定理より、&mimetex("\frac{1}{2}(e_1+1)(e_2+1) = \frac{1}{2}(2+1)(1+1) = 3");通りの2平方和で表すことができる。

&mimetex("325 = 1^2+18^2=6^2+17^2=10^2+15^2");

[4]650=2・5SUP{2};・13のとき

定理より、&mimetex("\frac{1}{2}(e_1+1)(e_2+1) = \frac{1}{2}(2+1)(1+1) = 3");通りの2平方和で表すことができる。

&mimetex("650 = 17^2+19^2=11^2+23^2=5^2+25^2"); ◇
#divid(e,notice)

*参考文献 [#ie559848]

-『算数からはじめよう!数論』
-なっとくするオイラーとフェルマー』