Maxima で綴る数学の旅

紙と鉛筆の代わりに、数式処理システムMaxima / Macsyma を使って、数学を楽しみましょう

2次形式で表される素数 続き

f:id:jurupapa:20121223092743j:plain

学校厩舎

 

4n+1型の素数は必ず \( x^2+y^2 \) の形に表すことができます。フェルマーはこの事実を無限降下法を使って証明しました。

 今回も

はじめての数論 原著第3版―発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

はじめての数論 原著第3版―発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

の第26章を参考して書いています。

証明は2段階に分かれます。

第一段階:4n+1型の素数pの適当な倍数mpが \( x^2+1 \)の形に書けることを示します。つまり \( m\,p=x^2+1 \)、あるいは \( x^2+1 \equiv 0 mod p \) .

第二段階:pがあるx,y,mについて \( x^2+y^2= m\,p \) のときmより小さいm'について \( x' ^2+y' ^2= m' \,p \) となるx', y'が存在する。

 

第一段階のm, xを計算する関数f(p)を前回の記事で示しました。次は第二段階のx', y', m'を計算する関数g(A,B,M,p)を示します。引数の前提として\( A^2+B^2=M\,p \)が成立しているとします。

 

(%i1) g(A,B,M,p):=block([u,v,newA,newB,r],

              u:mod(A,M),if (u>M/2) then u:u-M,

              v:mod(B,M),if (v>M/2) then v:v-M,

              newA:(u*A+v*B)/M,

              newB:(v*A-u*B)/M,

              r:(newA^2+newB^2)/p,

              [newA, newB, r]);

 

最後の行で新しく求めたnewA, newB, rが結果として返されます。当然\( newA^2+newB^2=r\,p \)が成り立つはずです。確かめてみましょう。

 

(%i2) p:11617;

$$ \tag{%o2} 11617 $$

(%i3) [primep(p),mod(p,4)];

$$ \tag{%o3} \left[ \mathbf{true} , 1 \right]  $$

確かにこのpは素数でかつ4で割ると1余ります。このpを使って試してみましょう。まず前回定義したf(p)を使ってx^2+1=mpを満たすx,mを一組求めます。

(%i4) [x,m]:f(p);

$$ \tag{%o4} \left[ 5688 , 2785 \right]  $$

次に今回定義したg()を使って、rがmより小さくなるような数の組を求めます。

(%i5) tmp:g(x,1,m,p);

$$ \tag{%o5} \left[ 241 , 2 , 5 \right]  $$

では検算をしてみましょう。\( 241^2+2^2 \) と \( 5 \, p \) を計算してみます。

(%i6) [%[1]^2+%[2]^2, %[3]*p];

$$ \tag{%o6} \left[ 58085 , 58085 \right]  $$

確かに一致しました!このように所望の性質を持つg()を定義することができました。これで第二段階の証明が出来たことにしましょう。

ちなみ(%o5)で得られた数の組にもう一度g()を適用すると、r=1となり、pの2つの平方数への分割を得ることができます。

(%i7) g(tmp[1],tmp[2],tmp[3],p);

$$ \tag{%o7} \left[ 49 , 96 , 1 \right]  $$

検算、検算。

(%i8) [%[1]^2+%[2]^2, p];

$$ \tag{%o8} \left[ 11617 , 11617 \right]  $$