の素体上の有理点の数を調べます。
楕円曲線Eの有理点の数を#Eと書きます。
素数pを3で割って2余る場合は、有理点の数は無限遠点を含み、#E= p + 1 であることが知られています。
の場合の、有理点の数をpythonで調べた結果がこちらです。
p, p mod 3, #E
2, 2, 3 = (p+1)
3, 0,4
5,2,6
7,1,8
11,2,12 = (p+1)
13,1,7
17,2,18 = (p+1)
19,1,12
23,2,24 = (p+1)
29,2,30 = (p+1)
31,1,21
37,1,39
41,2,42 = (p+1)
43,1,31
47,2,48 = (p+1)
確かにp mod 3 = 2 の場合は成り立っていることが分かります。
この曲線はsecp256k1で使われている曲線ですが、secp256k1の素数
はどうなっているでしょうか?
q mod 3 = 1
残念ながら余りが1なので、単純な式では出てきません。
pを3で割って1余る場合の有理点の数を算出する計算式は知られていますが、6乗根と、2次体を使った複雑なものです。
興味がある方は参考の文献を参照ください。難しすぎて鼻血が出るレベルです。。
有理点の数の計算はこちらのpythonコードを使いました。
参考: Kenneth Ireland Michael Rosen / A Classical Introduction to Modern Number Theory Springer-Verlag 1990