上の楕円曲線 の有理点個数の求め方です。
ここではSchoofアルゴリズムの理解を目的とし、少しづつ理解を進めます。
まず使うのはHasseの定理です。
Hasse-Weilの定理(楕円関数限定版) - Pebble Coding
有理点の数を#Eで表すと、
が成り立つのでaを求めれば、#Eが確定します。
aはある範囲内の唯一つの整数なので、
を満たす非負整数n,c が見つかったと仮定します。
ここで、
なので、
n がより大きかった場合は、dは0しかありえず、aはcと求まります。
計算する必要があるのは、だけとなりましたが、
nが大きいと計算量が多過ぎるので、 中国の剰余定理を用いて、もう少し分解します。
中国剰余定理の証明と例題(二元の場合) | 高校数学の美しい物語
中国の剰余定理は、2元の場合だけを書くと、
と が互いに素なとき
を満たす a が 0 以上 未満の範囲に唯1つ存在する。
というもので、これは任意の元の数に拡張しても成り立ちます。
をいくつかもってきて全ての積を作ったものをnとします。
は全て、互いに素な素数とします。
...
を計算して、あとはユークリッドの互除法を用いてaを計算します。