Python中的连续平方
我正在用python编写一个程序,其中包括将一个数字提升到极高的指数。为此,我尝试实现逐次平方法以减少计算时间并消除溢出错误的风险 连续平方的作用与Python中的连续平方,python,math,Python,Math,我正在用python编写一个程序,其中包括将一个数字提升到极高的指数。为此,我尝试实现逐次平方法以减少计算时间并消除溢出错误的风险 连续平方的作用与base**index%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
base**index%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(7,93,13)
=>8
但是你想要的是pow(7,13,93)
=>19
交换函数的第二个和第三个参数
>>> def ssp(b, n, m):
... 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)
19
你正在做的是pow(7,93,13)
=>8
但是你想要的是pow(7,13,93)
=>19
交换函数的第二个和第三个参数
>>> def ssp(b, n, m):
... 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)
19
我不确定您的函数有什么问题,但是您是否考虑过使用内置的
pow
?它做同样的事情。您是否有任何理由相信内置的pow
至少没有那么有效?我不确定您的功能有什么问题,但您是否考虑过使用内置的pow
?它做同样的事情。您有任何理由相信内置的pow
至少没有那么高效吗?谢谢!我实际上是从我的MATLAB代码中转换过来的,所以我有点粗略地描述了哪个变量是什么:PTHANK YOU!我实际上是从我的MATLAB代码中转换过来的,所以我有点粗略地描述了哪个变量最终是什么:P