为曲线添加点的Python算法
我正在尝试实现椭圆曲线的Double和Add算法,如下所示。然而,我并没有给出与教科书相同的答案。相反,我得到了一个重复的答案。代码有什么问题吗 代码应执行以下操作:为曲线添加点的Python算法,python,algorithm,Python,Algorithm,我正在尝试实现椭圆曲线的Double和Add算法,如下所示。然而,我并没有给出与教科书相同的答案。相反,我得到了一个重复的答案。代码有什么问题吗 代码应执行以下操作: 输入:点P和大于或等于1的整数n 设置Q=P和R=(0,0) 当n>0时循环 如果n=1模2,则设置R=R+Q 设置Q=2Q和n=楼层(n/2) 如果n>0,则在步骤3继续循环 返回点R,它等于nP def doubleandadd(n, A, B, p, (x,y)): P=(x,y) Q,R=P,(0,0)
def doubleandadd(n, A, B, p, (x,y)):
P=(x,y)
Q,R=P,(0,0)
while n>0:
if (n%2)==1:
R=R+Q
Q,n=2*Q,math.floor(n/2)
print R
您正在使用
tuple
s作为点,但是+
操作符将元组连接起来,而不是将它们的值相加。类似地,将元组乘以整数会重复元组的值,而不是将每个值相乘
我建议改为使用数值类型,如
numpy
'sarray
s(如果您不想使用numpy
,也可以自己添加元组的组件)。我该如何使用numpy?