Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.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 当指数为负时,pow(a,b,c)做什么?_Python_Python 3.x_Pow - Fatal编程技术网

Python 当指数为负时,pow(a,b,c)做什么?

Python 当指数为负时,pow(a,b,c)做什么?,python,python-3.x,pow,Python,Python 3.x,Pow,Python允许在内置函数pow中使用第三个参数,该函数基本上计算第三个参数的求幂模(pow(a,b,c)=a**b%c) 当指数为负时,它是如何工作的?例如: pow(6, -2, 13) #-> 4 pow(6, -2, 12) #-> Traceback (most recent call last): #-> File "<stdin>", line 1, in <module> #-> ValueError: base is not

Python允许在内置函数
pow
中使用第三个参数,该函数基本上计算第三个参数的求幂模(
pow(a,b,c)=a**b%c

当指数为负时,它是如何工作的?例如:

pow(6, -2, 13)
#-> 4

pow(6, -2, 12)
#-> Traceback (most recent call last):
#->  File "<stdin>", line 1, in <module>
#->  ValueError: base is not invertible for the given modulus
pow(6,-2,13)
#-> 4
战俘(6,-2,12)
#->回溯(最近一次呼叫最后一次):
#->文件“”,第1行,在
#->ValueError:对于给定的模数,基数不可逆

当第二个参数为
-1
时,它计算
a(mod c)
的模逆。使用其他负幂次
-n
会将模逆返回到
n
-th幂次
(mod c)


来自python内置函数文档:

对于int操作数base和exp,如果存在mod,则mod也必须是整数类型,并且mod必须为非零。若mod存在且exp为负,则base必须相对mod为素数。在这种情况下,返回pow(inv_base,-exp,mod),其中inv_base与基模mod相反


这意味着在您的示例中,python计算6的倒数(因此
6*inverse=1
)并计算
pow(倒数,2,13)
。在这种情况下,6模13的倒数是11(
6*11=66=1模13
),您计算
11**2=121=4模13
,您自己试过检查吗?Python在提供第三个参数时不支持负指数,在版本3.8.x中做了一些更改,现在它允许您计算模逆(与处理实数时的“标准”逆相反)

所以,如果示例pow(2,-1,3)告诉你模3中的倒数是2,因为2*2=4=1模3

pow(base, exp) =  base**exp
pow(12,2) = 144 = 12**2
现在在3.8支持下计算模逆。在此之前,他们拒绝与基模相反