最近この本を買って読んでいました。
p進数、ガロア群、連分数、楕円曲線などの進んだ数学について、教科書には載ってなさそうな話をいくつも説明している、とても面白い本です。結構幅が広いため、興味を持ったところだけを読み進んでいます。
その中でも最後の章ではpが4n+1型の素数の時、p=n^2+m^2 (n,mは整数)と2つの平方数に分解できることを、6通りもの方法で証明しています。そのうちの5つは構成的な証明になっており、与えられたpに対してn,mを具体的に求める方法が提示されています。
この話題は以前日曜数学者のtsujimotterさんが2つの方法を取り上げて説明していました。
これらの記事で取り上げられている証明も5つの構成的証明に含まれるのですが、上記の他に3つもある、というのが驚きです。そうであればMaximaでこの5つの方法を全てプログラミングしたくなりますよね、、、
ちなみに以下に5つの構成的証明(pからn,mを求める方法)の主要点を紹介します。個別のプログラムは別記事でそれぞれご紹介することにします。
- フェルマーの無限降下法を使う方法 tsujimotterさんの(1)の記事に紹介されているのと同じ方法です。
- ヤコブスタール和を使う方法 tsujimotterさんの(2)の記事で紹介されているのと同じ方法です。
- 二項係数から求める方法 二項係数や階乗を使った具体的な式として求める方法です。ガウスが証明しているそうです。
- 互除法を使う方法 pとpから求まるaを初期値としてpとaで互除法を繰り返すだけでn,mが求まる、不思議な方法です。
- mod pの指標のヤコビ和から求める方法 mod pの指標群の中で位数が4の指標\( \chi \)についてヤコビ和\( Jacobi\left(\chi , \chi\right) \)を求めるとその実部と虚部がmとnになる、というこれまた不思議な方法です。
プログラムにするとどれも最大でも10行程度でかけてしまいます。1,2はすでにtsujimotterさんの記事でrubyで書かれたプログラムがありますから、この後の記事では3, 4, 5を説明したいと思います。