質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

724閲覧

楕円加算について invalid syntaxとでる

kyamamama

総合スコア4

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/20 11:07

前提・実現したいこと

楕円曲線の楕円加算について研究しています
プログラミングでは
def ec_add
def ec_double
def ec_third
def Base
までは問題なく動きましたが最後のdefでエラーが発生しました

3進法で表しなおして数字が表れる?ごとに毎回def thirdを行い、bitが1の場合とbitが2の場合は追加操作を行うようにプログラミングを組みたいと思っています。
今回はbitが2とならないからエラーが出ているのでしょうか?

よろしくお願いします

■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

File "<ipython-input-54-fd35ac9ee141>", line 38 else bit =="2": ^ SyntaxError: invalid syntax

該当のソースコード

#Fp上のy-2=x^3+ax+yでの p,a,b=11,1,2 G=(1,2) def inv(n,p):#inv(obj)objのビット単位反転を返す return pow(n,p-2,p) def ec_double(A):#P=Qのとき l=(((3*A[0]**2)+a)*inv(2*A[1],p))%p x=(l**2-A[0]-A[0])%p y=(l*(A[0]-x)-A[1])%p return x,y def ec_add(A,B): l=((B[1]-A[1])*inv(B[0]-A[0],p))%p x=(l**2-A[0]-B[0])%p y=(l*(A[0]-x)-A[1])%p return x,y def ec_third(A): t=((3*A[0]**2+a)*inv(2*A[1],p))%p l=((2*A[1]-t*(3*A[0]-t**2))*inv((3*A[0]-t**2),p))%p x=(l**2-t**2+A[0])%p y=(l*(2*t**2-3*A[0]-l**2)-(t*(3*A[0]-t**2)-A[1]))%p return x,y def Base_10_to_n(X,n): if(int(X/n)): return Base_10_to_n(int(X/n),n)+str(X%n) return str(X%n) def third_method(P,d): P=Q bin_str=Base_10_to_n(p,3) for bit in bin_str[1:]:#1番目の要素から最後の要素まで取得 Q=ec_third(Q) if bit =="1": Q=ec_add(Q,P) else bit =="2": P2=ec_double(P) Q=ec_add(Q,P2) return Q

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

他の方が作成したプログラミングを基に作っていて、def third_methodの最初のP=Qとかく意味があまり理解できていないので一緒に教えていただきたいです…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

else bit =="2":
elif なんでは

投稿2020/12/20 11:45

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kyamamama

2020/12/20 11:53

エラーなくなりました、ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問