Метод возведения в квадрат всегда
Помимо метода квадратного и умножения, есть этот метод квадратного и умножения всегда, и я пытаюсь реализовать его в Python. Моя проблема в том, что во время поиска я нашел для него псевдокод, и реализовал его на python, но он не дает правильных результатов по сравнению с функцией pow.
Псевдокод можно найти по ссылке выше или на этом скриншоте.
Моя реализация
def square_and_multiply_always(base, exp, mod):
R0=1
R1 = base
c = '{0:b}'.format(exp)
i=len(c)
t=0
while i>=0:
if(t==0):
Rt=R0
elif(t==1):
Rt=R1
else:
print("t != 0 or 1")
R0=(R0*Rt)%mod
a=int(c[i-1])
t=(t^a)
i=i-1+t
return R0
1 ответ
Мне удалось найти свои ошибки, так что вот правильный код для будущих поисков, которые заканчиваются здесь
def square_and_multiply_always(base, exp, mod):
R0=1
R1 = base
c = '{0:b}'.format(exp)
i=len(c)-1
t=0
c=c[::-1]
while(i>=0):
if(t==0):
Rt=R0
elif(t==1):
Rt=R1
else:
print("t != 0 or 1")
R0=(R0*Rt)%mod
d=int(c[i])
t=(t^d)
i=i-1+t
return R0