将一个模数值转换为另一个

时间:2013-08-02 14:21:13

标签: math language-agnostic modulus

给定N = A%B,如何找到A%C的值,其中B> C。 您被赋予N和C的值,但不是A的值。

有没有办法找到这个?

2 个答案:

答案 0 :(得分:7)

不。请考虑以下事项:

A = 19
B = 10
C = 7
==> Given 9, you should get 5.

A = 29
B = 10
C = 7
==> Given 9, you should get 1.

所以给定相同的输入,可能有多个答案。

答案 1 :(得分:1)

模运算是单向的:给定 a mod b = n ,我只能说 a 来自所有其他整数的集合,模数 b ,等于 n

让我们证明这一般是不可能的,取B = 3,C = 2。

  • n = a mod 3 = 1
  • => a在整数集合中{3x + 1}
  • 所以考虑一下,x = 1
    • 4 mod 3 = 1,因此工作
    • 4 mod 2 = 0
  • 现在考虑x = 2
    • 7 mod 3 = 1,所以我们无法区分4和7只知道 n b
    • 7 mod 2 = 1

也就是说,如果 b = 3 n = 1 ,则必须在不知道的情况下获得两个不同的答案一个

但是,您可能会认为这是一个特殊情况, b c 这里是互质的,实际上它们都是素数。在某些情况下,您当然可以轻松解决此问题,例如 b = 4 c = 2

BTW,对此的进一步讨论可能更适合mathoverflow