Python pow() 和模数

问题描述 投票:0回答:2

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

用模计算负指数有什么区别?

python pow
2个回答
7
投票

来自文档

如果 mod 存在且 exp 为负,则 base 必须与 mod 互质。在这种情况下,将返回

pow(inv_base, -exp, mod)
,其中
inv_base
base
mod 的倒数。


0
投票

从 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
来做。

© www.soinside.com 2019 - 2024. All rights reserved.