Я пишу программу на python, которая включает в себя повышение числа до чрезвычайно высокого показателя. Для этого я пытаюсь реализовать метод последовательных квадратов, чтобы уменьшить время вычисления и устранить риск ошибки переполнения.Последовательные квадраты в Python
Последовательные квадратов означает делать то же самое, как base**exponent % modulo
и текущая функция Я написал это:
def ssp(b, m, n):
ssp = 1
while n>0:
if n % 2 == 1:
ssp = b*ssp % m
b = b**2 % m
n = n // 2
return ssp
Когда я проверить функцию с ssp(7, 13, 93)
я получаю ответ 8, когда оно должно быть 19. Может кто-нибудь дать намек на то, что я сделал неправильно?
Я не уверен, в чем проблема с вашей функцией, но вы считали, что используете встроенную 'pow'? Он делает то же самое. http://docs.python.org/2/library/functions.html#pow – recursive
У вас есть основания полагать, что встроенная функция 'pow' не менее эффективна? – recursive