Python pow() 和模数
Python pow() and modulus
python3 中的 pow() 函数提供指数值。
>>>pow(2,3)
8
Python3 支持负指数,即 可以使用 pow(10,-1) 表示。当我计算 pow(4,-1,5) 时,它给出了输出 4.
>>> pow(4, -1, 5)
4
我无法理解值 4 是如何计算出来的,因为它在后台执行
手动计算时没有 return 值 4 作为提醒。
当 -ve 值以两个值传递时,它会以手动方法响应所需的输出。
>>> pow(4, -1)
.25
用模计算负指数有什么区别?
If mod is present and exp is negative, base must be relatively prime to mod. In that case, pow(inv_base, -exp, mod)
is returned, where inv_base
is an inverse to base
modulo mod.
从 python 3.8 开始,pow
函数允许您计算 modular 逆。正如其他答案所提到的,当您使用整数、有一个负数 exp 并且 base 相对于 mod 时,就会发生这种情况。 (你的例子就是这种情况)
什么是 mod 逆元?
让我们从正态逆开始。一些数字 Y
有一个倒数 X
使得 Y * X == 1
。模逆非常相似。对于一些数字 Y
和一些 modulus mod
,存在逆 X
这样 ((X * Y) % mod) == 1
。从您的示例中,您会看到 (4 * 4) % 5
实际上等于 1
,使 4 成为 Y = 4
和 mod = 5
.[=27= 的有效 mod 逆元]
你怎么才能得到pow(4, -1, 5) == 0.25
好吧,您可以将其编写为单独的步骤 (4 ** -1) % 5
,但正如文档所述
if mod is present, return base to the power exp, modulo mod (computed more efficiently than pow(base, exp) % mod)
因此您可能会牺牲性能来使用 (4 ** -1) % 5
。不幸的是,似乎无法使用 pow
.
python3 中的 pow() 函数提供指数值。
>>>pow(2,3)
8
Python3 支持负指数,即 可以使用 pow(10,-1) 表示。当我计算 pow(4,-1,5) 时,它给出了输出 4.
>>> pow(4, -1, 5)
4
我无法理解值 4 是如何计算出来的,因为它在后台执行 手动计算时没有 return 值 4 作为提醒。
当 -ve 值以两个值传递时,它会以手动方法响应所需的输出。
>>> pow(4, -1)
.25
用模计算负指数有什么区别?
If mod is present and exp is negative, base must be relatively prime to mod. In that case,
pow(inv_base, -exp, mod)
is returned, whereinv_base
is an inverse tobase
modulo mod.
从 python 3.8 开始,pow
函数允许您计算 modular 逆。正如其他答案所提到的,当您使用整数、有一个负数 exp 并且 base 相对于 mod 时,就会发生这种情况。 (你的例子就是这种情况)
什么是 mod 逆元?
让我们从正态逆开始。一些数字 Y
有一个倒数 X
使得 Y * X == 1
。模逆非常相似。对于一些数字 Y
和一些 modulus mod
,存在逆 X
这样 ((X * Y) % mod) == 1
。从您的示例中,您会看到 (4 * 4) % 5
实际上等于 1
,使 4 成为 Y = 4
和 mod = 5
.[=27= 的有效 mod 逆元]
你怎么才能得到pow(4, -1, 5) == 0.25
好吧,您可以将其编写为单独的步骤 (4 ** -1) % 5
,但正如文档所述
if mod is present, return base to the power exp, modulo mod (computed more efficiently than pow(base, exp) % mod)
因此您可能会牺牲性能来使用 (4 ** -1) % 5
。不幸的是,似乎无法使用 pow
.