楕円曲線(剰余演算)上の整数点の数とnPで網羅する点の数
前回の投稿で楕円曲線(剰余演算)を行って以下の2つを求めました(無限遠点を含む)。
- 整数点の数 $\cdots (1)$
- 整数点Pから初めてnPで網羅する点の数(位数) $\cdots (2)$
前回の投稿では、楕円曲線$E: y^2 + x^3 + ax + b \pmod p $で$a = 0, b = 17, p = 13$の時は両方とも$21$で一致しました。
今回は$b, p$が他の値の時はどうか調べてみました($a=0$の場合のみ)。
$(2)$の網羅する点に関して始める整数点Pを変えて最大値を取りました。
以下の表で$dとp$を変えてその結果を$(1)/(2)$で示しています
b=7 | b=11 | b=13 | b=17 | b=19 | b=23 | b=29 | b=31 | |
---|---|---|---|---|---|---|---|---|
p=11 | 12/12 | 12/11 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 | 12/12 |
p=13 | 7/7 | 19/19 | 14/13 | 21/21 | 7/7 | 9/3 | 9/3 | 16/4 |
p=17 | 18/18 | 18/18 | 18/18 | 18/17 | 18/18 | 18/18 | 18/18 | 18/18 |
p=19 | 12/6 | 12/6 | 19/19 | 27/9 | 20/19 | 21/21 | 19/19 | 28/14 |
p=23 | 24/24 | 24/24 | 24/24 | 24/24 | 24/24 | 24/23 | 24/24 | 24/24 |
p=29 | 30/30 | 30/30 | 30/30 | 30/30 | 30/30 | 30/30 | 30/29 | 30/30 |
p=31 | 21/21 | 25/5 | 25/5 | 43/43 | 21/21 | 28/14 | 28/14 | 32/31 |
p=37 | 39/39 | 48/12 | 37/37 | 49/49 | 37/37 | 28/14 | 28/14 | 28/14 |
p=41 | 42/42 | 42/42 | 42/42 | 42/42 | 42/42 | 42/42 | 42/42 | 42/42 |
p=43 | 31/31 | 36/6 | 57/57 | 57/57 | 49/7 | 39/39 | 31/31 | 39/39 |
p=47 | 48/48 | 48/48 | 48/48 | 48/48 | 48/48 | 48/48 | 48/48 | 48/48 |
p=53 | 54/54 | 54/54 | 54/54 | 54/54 | 54/54 | 54/54 | 54/54 | 54/54 |
p=59 | 60/60 | 60/60 | 60/60 | 60/60 | 60/60 | 60/60 | 60/60 | 60/60 |
p=61 | 61/61 | 76/38 | 63/21 | 49/49 | 75/15 | 76/38 | 49/49 | 49/49 |
p=67 | 79/79 | 79/79 | 73/73 | 63/21 | 63/21 | 63/21 | 57/57 | 79/79 |
p=71 | 72/72 | 72/72 | 72/72 | 72/72 | 72/72 | 72/72 | 72/72 | 72/72 |
p=73 | 64/8 | 91/91 | 67/67 | 64/8 | 81/9 | 57/57 | 67/67 | 67/67 |
p=79 | 67/67 | 93/93 | 63/21 | 76/38 | 93/93 | 93/93 | 67/67 | 93/93 |
p=83 | 84/84 | 84/84 | 84/84 | 84/84 | 84/84 | 84/84 | 84/84 | 84/84 |
p=89 | 90/90 | 90/90 | 90/90 | 90/90 | 90/90 | 90/90 | 90/90 | 90/90 |
p=97 | 79/79 | 93/93 | 79/79 | 103/103 | 112/28 | 103/103 | 79/79 | 117/39 |
整数点の数とnP倍で網羅する点の数の考察
以下のことが見て取れます。
- 多くの場合$(1)=(2)$となっている、特に$(1)=(2)=p+1$になる場合($p=23,29,41,47,...$)は$b$の値に関係なく$(1)=(2)$となる。($p=b$の時をのぞく)
- 赤字の$p=b$の時は$(1)=(2)+1$。これは$(x,y)=(0,0)$が解となりこれが孤立しているから。
- それ以外のケースではかなりランダムに$(1)>(2)$となっている。ただ$(2)$は$(1)$の約数になっている。
残念ながらその規則性は分かりませんでした。楕円曲線でつかう$b, p$はこの辺を考慮して選ぶ必要がありますね。
ちなみにビットコインで使われているsecp256k1では以下の値が使われているそうです。
p = 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC2F
a = 0
b = 7
(開発環境:Google Colab)