如何解决Python pow() 和模数
python3 中的 pow() 函数提供指数的值。
>>>pow(2,3)
8
Python3 支持可以使用 pow(10,-1) 表示
>>> pow(4,5)
4
我无法理解值 4 是如何计算的,因为它在后台执行
当 -ve value 以两个值传递时,它以手动方法响应所需的输出。
>>> pow(4,-1)
.25
用模数计算负指数有什么区别?
解决方法
如果 mod 存在且 exp 为负,则 base 必须与 mod 互质。在这种情况下,返回 pow(inv_base,-exp,mod)
,其中 inv_base
是 base
modulo mod 的倒数。
从 python 3.8 开始,pow
函数允许您计算模逆。正如其他答案所提到的,当您使用整数、具有负 exp 并且 base 与 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,则将 base 返回到幂 exp,modulo mod(比 pow(base,exp) % mod 计算效率更高)
因此您可能会通过使用 (4 ** -1) % 5
来牺牲性能。不幸的是,pow
似乎无法做到这一点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。