【问题标题】:Python pow() and modulusPython pow() 和模数
【发布时间】:2021-08-26 16:37:00
【问题描述】:

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


    【解决方案1】:

    从 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 = 4mod = 5 的有效模逆。

    你是怎么得到pow(4, -1, 5) == 0.25

    好吧,您可以将其编写为单独的步骤(4 ** -1) % 5,但正如文档所述

    如果存在 mod,则返回 base 到幂 exp,模 mod(计算比 pow(base, exp) % mod 更有效)

    因此,您可能会通过使用(4 ** -1) % 5 来牺牲性能。不幸的是,这似乎与pow 无关。

    【讨论】:

      【解决方案2】:

      来自documentation

      如果存在 modexp 为负数,则 base 必须与 mod 互质。在这种情况下,将返回 pow(inv_base, -exp, mod),其中 inv_basebasemod 的倒数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-04
        • 1970-01-01
        • 2019-04-04
        • 2018-02-25
        • 1970-01-01
        • 1970-01-01
        • 2015-12-20
        相关资源
        最近更新 更多