群論では、抽象的な群の要素を群の演算を保つように数字(複素数)に写像することがあり、この写像を指標と呼びます。指標の値は数字なので、解析的な道具(四則演算、微積、ゼータ関数の係数など)と組み合わせることで、群の性質を式に取り入れて計算したり、解析的に証明したりできるようになります。\chi\left(a\,b\right)=\chi\left(a\right)\,\chi\left(b\right)\)を満たす写像として定義されます(便宜上\(\chi\left(0\right)=0\)とします)。\(F_5\)の乗法群\(F_5^{\times}=\{1,2,3,4\}\)に対して、\(\chi\left(1\right)=1,\chi\left(2\right)=i,\chi\left(3\right)=-i,\chi\left(4\right)=-1\)と定義すると\(\chi\)は指標になっています。睨んで確認してください。-i\}\)であるとき、\(\chi\)は位数4の指標である、と言います。ちなみに\(F_5\)の乗法群\(F_5^{\times}\)の指標は他にもあります。F_p\)について\(\chi_0\left(a\right)=1\)と定義すれば\(\chi_0\)(単位指標と呼びます)も指標になります。指標同士の積も指標になります。今回、もう一つ面倒な数学対象を導入します。ヤコビ和と呼ばれる、\(F_p\)上の2つの指標に対して次の式で定義される和です。)}\)このヤコビ和が本来何に使われるのか、は別の記事にしたいと思います。ここでは今回の記事で重要な次の3つを指摘だけをします(橋本先生の本のp285を参照)。i\}\)で位数が4であるものが存在します。Z\)と書くとき\(p=a^2+b^2\)が成立1は自明ではないのですが認めることにすると、2は比較的自明で、この2つのことからほぼ自明に3が成り立ちます。これでようやく数学的な準備が終了しました。ここから次のような流れでpからa,bを求めることができます。\(4\,k+1\)型素数\(p\)に対して位数4の指標\(\chi\)を求める。\(J\left(\chi,\chi^{\prime}\right)\)を定義し、上記の\(\chi\)に対して\(J\left(\chi,\chi\right)\)を求める。その値の虚部と実部を取り出す。プログラムを見てみましょう。init_chi(p)はpに対して位数4の指標を求めて、配列として返します。ここで使っている指標の計算方法も別の記事で書ければと思います。chi_array[index:mod(index*pr,p)]:(val:val*%i),chi_array)$次はヤコビ和を定義します。こちらは定義通りです。JacobiSum(x1,x2,p):=sum(x1[k]*x2[mod(1-k,p)],k,1,p-1)$では早速試してみましょう。使う素数は1000033です。$$この素数に対して位数4の指標を計算します。chi:init_chi(p)$この指標に対してヤコビ和を計算します。$$元に戻ることを確認しましょう。$$時間を計測してみました。