【问题标题】:what is the result of modulo opeartion on (a-b)%n对 (abn) 进行模运算的结果是什么
【发布时间】:2013-03-25 07:31:24
【问题描述】:

最近我解决了一个我必须计算 (a-b)%n 的问题。当 a-b 是正数时,结果是不言自明的,但对于负数,我得到的结果似乎令人困惑..我只是想知道如何我们为负数计算这个结果。

欢迎任何处理模运算符属性的链接。

【问题讨论】:

标签: math language-agnostic modulo modulus


【解决方案1】:

http://en.m.wikipedia.org/wiki/Modulo_operation

在许多编程语言(C、Java)中,模运算符被定义为模数与第一个操作数具有相同的符号。这意味着以下等式成立:

(-a) % n = -(a % n)

例如,-8%3 将是 -2,因为 8%3 是 2。

其他的,例如 Python,在除以 n 时计算 a % n 作为正余数,这意味着

(-a) % n = n - (a % n)

例如,-8%3 是 1,因为 3-(8%3) 是 3-2 是 1。

请注意,在modular arithmetic 中,添加或减去 n 的任何倍数都不会改变结果,因为“相等”(或 同余,如果您更喜欢该术语)是根据可分性定义的:X 是如果它是 n 的倍数,则等于 0,如果 A-B 是 n 的倍数,则 A 等于 B。例如 -2 等于 1 模 3,因为 -2-1 = -3 可以被 3 整除。

【讨论】:

  • 感谢您的回答,但我没有得到最后一点:添加或减去 n 的倍数不会产生...,假设我们找到 -11%13=-11..但添加13 到 -11 然后找到结果给出 2%13=2..结果不同..那你为什么这么说??
  • 查看更新。 -11 等于 2 模 13,因为 -11-2 = -13 是 13 的倍数。
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 2017-05-23
  • 2017-07-12
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多