什么是模运算的结果(abn

时间:2013-03-25 07:31:25

标签: math language-agnostic modulo modulus

最近我解决了一个问题,我必须计算(ab)%n。当ab是正数时,结果是自我解释的但是对于负数,我得到的结果似乎令人困惑。我只是想知道怎么能我们用负数来计算这个结果。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

其他人,比如Python,在潜水n时计算%n而不是正余数,这意味着

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

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

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