定理 F11 を再掲します。
一般の正負の整数
のように表せるので、整数が平方剰余であるかどうかは
を計算して判定することができます。すなわち任意の整数について、素因数分解によって奇素因数
を計算すれば、その整数の平方剰余/平方非剰余を判定することができるということです。
第1補充法則
において
ここで
となるので、
が解をもつのは、
すなわち
は解をもつということです。実際に確認してみましょう。
を
となって、確かに余り
が解となります。
第2補充法則
次は
によって判定することもできますが、たとえば
を計算しなくてはならず、少し面倒です。右辺が
この定理の証明の準備として、前回記事で扱った ガウスの補題 を少し噛み砕いた表現に直しておきます(意味は同じです)。
さらに
第2補充法則の証明にはこの定理を用いますが、一般的な証明は少し難しいので、まずは
を
というように同じ数が並びます。このなかに
となって、
です。これらの数を
というように
のように表すこともできます。
と書き換えることもできます。以上を踏まえて一般的な証明を記述します。
[定理F14の証明]
となります。このなかに
となります。つまり
これに偶数をいくつ加えても合同なので、等差級数の公式を用いて
が得られます(証明終)。
相互法則(Reciprocity Law)
次は相互法則(reciprocity law) の証明を行ないます。
相互法則はオイラーによって予想され、ガウスによって証明されました。
この定理は
証明には ガウスの補題 を用います:
ガウスの補題において
を
が成り立ちます。同様に、
を
が成り立ちます。すなわち
なので、
が成り立つ(両辺の偶奇が一致する)ことを示せれば、相互法則
を証明できたことになります。
[R1の証明] 格子点を使って証明します。
です。また、直線
と表せます。この式を変形すると
となります。
すなわち
これを図で考えると、
同様に
ここで
これを少し変形して
となります。すなわち
が成り立つことがわかり、これによって平方剰余の相互法則
が示されました。
mod 4 による判定
奇数を
となります。
であり、
となります。したがって、
平方剰余の例題
これまでに得た知識を総合すると、どのような方程式についても、平方剰余/非剰余の判定ができます(もちろん
[定理F11:積の法則]
[定理F13:第1補充法則]
[定理F14:第2補充法則]
[定理F15:相互法則]
それでは合同方程式
に解があるかどうかを調べましょう(このような簡素な問いに答えるために、私たちはここまで頑張ってきたのです!)。ルジャンドル記号を用いて表すと
の値が
なので、
と書き直せます。このように変形できることが相互法則の恩恵なのです。なぜなら、
と計算できます (任意の
となり、
Excelで平方剰余の問題を解いてみます
コンピュータの力を借りると、平方剰余/非剰余の判定のみならず、実際の解を求めることも比較的容易にできます。さきほどの合同方程式
を満たす最小の整数
A 列に
VBAで平方剰余の問題を解いてみます
VBA で平方剰余の問題を解く QR関数をつくっておきました。QR は Quadratic Residue(平方剰余)の頭文字です。VBE を起動して標準モジュールに貼りつけると、ワークシートで Excel 関数のように扱えます。
'VBA Quadratic Residue
Function QR(a As Long, p As Long) As Variant
Dim x As Long
'pについてaと合同な最小数を得る
Do While a > p
a = a - p
Loop
'解が見つからない場合はFalseを返す
QR = False
'x^2をpで割った余りがaであればxは解
For x = 1 To p - 1
If x ^ 2 Mod p = a Then
QR = x
Exit For
End If
Next x
End Function
QR関数を使うときはセルに「=QR(a,p)」の形で入力します。もし解がなければ(平方非剰余であるならば)、この関数は False を返します。さきほどの合同方程式
「=QR(18,31)」と入力すると、7 という値が返ってきます。つまり、
エクセルや数学に関するコメントをお寄せください