F_p上の楕円曲線のオーダーをrustでbrute-force(力任せ)に計算してみました。
以前 pythonで実装しましたがだいぶ速くなっています。
GitHub - pebble8888/ellipticcurve
F_5, y^2 = x^3 + x + 1, order:9, j:2 F_7, y^2 = x^3 + x + 1, order:5, j:1 order is prime F_11, y^2 = x^3 + x + 1, order:14, j:9 F_13, y^2 = x^3 + x + 1, order:18, j:7 F_17, y^2 = x^3 + x + 1, order:18, j:8 F_19, y^2 = x^3 + x + 1, order:21, j:6 F_23, y^2 = x^3 + x + 1, order:28, j:13 F_29, y^2 = x^3 + x + 1, order:36, j:5 F_31, y^2 = x^3 + x + 1, order:33, j:0 F_37, y^2 = x^3 + x + 1, order:48, j:32 F_41, y^2 = x^3 + x + 1, order:35, j:14 F_43, y^2 = x^3 + x + 1, order:34, j:26 F_47, y^2 = x^3 + x + 1, order:60, j:38 F_53, y^2 = x^3 + x + 1, order:58, j:52 F_59, y^2 = x^3 + x + 1, order:63, j:6 F_61, y^2 = x^3 + x + 1, order:50, j:38 F_67, y^2 = x^3 + x + 1, order:56, j:9 F_71, y^2 = x^3 + x + 1, order:59, j:26 order is prime F_73, y^2 = x^3 + x + 1, order:72, j:44 F_79, y^2 = x^3 + x + 1, order:86, j:14 F_83, y^2 = x^3 + x + 1, order:90, j:65 F_89, y^2 = x^3 + x + 1, order:100, j:22 F_97, y^2 = x^3 + x + 1, order:97, j:54 order is prime F_101, y^2 = x^3 + x + 1, order:105, j:34 F_103, y^2 = x^3 + x + 1, order:87, j:7 F_107, y^2 = x^3 + x + 1, order:105, j:78 F_109, y^2 = x^3 + x + 1, order:123, j:12 F_113, y^2 = x^3 + x + 1, order:125, j:48 F_127, y^2 = x^3 + x + 1, order:126, j:55 F_131, y^2 = x^3 + x + 1, order:128, j:130
目的は理解を深めるために楕円曲線の計算ライブラリを作ることです。
SageMathはどうも思ったように動いてくれないためrustで自作することにしました。
楕円曲線上の有理点を求めるschoof法は実装済みなのですが、遅いので、あまり実用的ではありません。
最終目標はSEA法を実装することですが、まだまだ先は長いです。