Есть статья на хабре
https://habr.com/ru/post/335906/
Представлена формула для нахождения Q = P*n
С помощью кода, который есть также в статье получаю Q
import numpy as np
def f(x,a,b):
return x**3+a*x + b
def bits(n):
"""
Генерирует двоичные разряды n, начиная
с наименее значимого бита.
bits(151) -> 1, 1, 1, 0, 1, 0, 0, 1
"""
while n:
yield n & 1
n >>= 1
def double_and_add(n, x):
"""
Возвращает результат n * x, вычисленный
алгоритмом удвоения-сложения.
"""
result = 0
addend = x
for bit in bits(n):
if bit == 1:
result += addend
addend *= 2
return result
Вопрос. Вот мои входные данные. Или я неправильно умножаю, или тут что то не так.
P = 3
Q = double_and_add(P,151)
xp = P
yp = np.sqrt(f(xp)) #4
xq = Q #453 вот тут уже что то не так
yq = np.sqrt(f(xq))
Результат я сопоставляю с сайтом
https://cdn.rawgit.com/andreacorbellini/ecc/920b29...