質問: > > 楕円加算について研究しています. > > 手計算では合っているのにプログラミングにすると違う答えが返ってきてしまいます > > ec_double > > ec_add > > ec_third > > Base_10_to_n(X,n) > > の関数は問題ないことがわかっているため説明は省略させていただきます. > > > 数字を3進法に直し値が0,1,2ごとにそれぞれ以下のように関数に当てはめるようにしたいと思っています 0の場合はec_third(Q)のみ 1の場合はec_third(Q)からec_add(Q,P),ec_third(Q) 2の場合はec_third(Q)からG2=ec_double(P),ec_add(Q,P) おそらくbite=2のときが間違えているようです G2の値は(10,0)が正解です ご回答宜しくお願い致します ``` def Base_10_to_n(X,n):3進法に直す if(int(X/n)): return Base_10_to_n(int(X/n),n)+str(X%n) return str(X%n) def third_mathod(P,d): Q=P for bit in Base_10_to_n(d,3)[1:]:#1番目の要素から最後の要素まで取得 Q=ec_third(Q) if bit =="1": Q=ec_add(Q,P) elif bit =="2": P=ec_double(P) Q=ec_add(Q,P) return Q ```
回答: (質問の編集に伴い回答も変更...どちらかというと追記修正依頼かなぁ?) > > G2の値は(10,0)が正解です > > > 何を、どこに入力したらそうなるはずなのですか?