Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的连续平方_Python_Math - Fatal编程技术网

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

我正在用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
    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