【问题标题】:How to find inverse of mod when there is an unknown number当有未知数时如何找到mod的倒数
【发布时间】:2021-12-25 10:29:53
【问题描述】:

我有一个公式:(2x + 3×7 + 5×9 + 7×2) mod 11 = 4 如何在 Python 中找到 x? 不允许试错

【问题讨论】:

  • 相当简单,但与 Python 无关。
  • 这能回答你的问题吗? Reverse Modulus Operator
  • 您的意思是 (2x + 3*7 + 5*9 + 7*2) = (2x + 80) mod 11 = 4 还是 x 的右幂数? (2x + 3×^7 + 5×^9 + 7×^2) mod 11 = 4。这将是两个非常不同的问题。您可以很容易地找到第一种形式的 x=6。第二个比较棘手。
  • 我的问题是第一个。你能告诉我如何解决这个问题吗?

标签: python inverse mod


【解决方案1】:

一般来说,可以满足这个方程的 x 是无限的,但是应该有一些限制。 例如,您可以执行以下操作来找到最小的正 x。

M = 11
for x in range(M):
    m = (2*x + 3*7 + 5*9 + 7*2)%M
    if m==4:
        print(x)
        break

【讨论】:

    【解决方案2】:

    我想,你找不到 mod % 函数的逆函数,因为

    modulo 计算给定 2 个数字相除时的余数...

    因此,对于 modulo 的倒数,您必须传入余数并返回 2 个数字,即被除数和除数。

    现在这在数学上是如何可能的,因为可以有 无限 的除数和除数给出相同的余数。例如

    11%10 = 1

    11%5 = 1

    6%5 = 1

    这里,在所有情况下,余数都是1,现在如果我将1传递给函数,除非传递的值和要返回的值之间存在某种关系,否则函数无法返回所需的值,您可以在上述情况下看到(561011)和1之间没有关系,即使除数相同,被除数也不是,即使被除数相同,除数也不相同。

    因此,理论上,modulo 的逆函数根本不是函数,因为函数只能映射:-

    • 其域中的一个值到其范围内的一个值,即 one-one(injection) 或

    • 其域中的许多值到其范围内的一个值,即 many-one

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多