Python3 中的
pow()
函数提供指数值。
>>>pow(2, 3)
8
Python3 支持负指数,即 可以使用
pow(10, -1)
表示。当我计算 pow(4, -1, 5)
时,输出为 4。
>>> pow(4, -1, 5)
4
我无法理解值 4 是如何计算的,因为在后台,它执行 当我手动计算时,它没有返回值 4 作为提醒。
当 -ve 值传入两个值时,它会以手动方法响应所需的输出。
>>> pow(4, -1)
.25
用模计算负指数有什么区别?
来自文档;
如果 mod 存在且 exp 为负,则 base 必须与 mod 互质。在这种情况下,将返回
,其中pow(inv_base, -exp, mod)
是inv_base
模 mod 的倒数。base
从 python 3.8 开始,
pow
函数允许您计算模逆。正如其他答案所提到的,当您使用整数、exp 为负且基数与 mod 互质时,就会发生这种情况。 (您的示例就是这种情况)
让我们从正常的逆开始。某些数字
Y
具有逆 X
,使得 Y * X == 1
。模逆非常相似。对于某些数字 Y
和某些模数 mod
,存在逆 X
,使得 ((X * Y) % mod) == 1
。从您的示例中,您将看到 (4 * 4) % 5
实际上等于 1
,使得 4 成为 Y = 4
和 mod = 5
的有效模逆。
pow(4, -1, 5) == 0.25
好吧,您可以将其编写为单独的步骤
(4 ** -1) % 5
,但正如文档所述
如果 mod 存在,则返回底数到 exp 的幂,模 mod(计算效率比 pow(base, exp) % mod)
因此,使用
(4 ** -1) % 5
可能会牺牲性能。不幸的是,这似乎不可能用pow
来做。