有人可以向我解释为什么 mod (-4) 3 =2 而不是 1 吗?
Could someone explain to me why mod (-4) 3 =2 and not 1?
我正在努力思考 mod
函数。一切似乎都很好,直到我在 GHCi 中尝试 mod (-4) 3
。有人可以向我解释为什么 mod (-4) 3
等于 2
而不是 1
吗?真的很困扰我!
与正数的mod相同。在算术 modulo c 中,我们试图将任何 x 表示为 qc+r,其中 r 必须是一个非负整数。
我们为什么不通过示例对其进行测试?
取 −100 mod 8=4。这是因为 8⋅−13=−104。余数为4.
我会尝试解释...我的方式:
qc + r 表示正数意味着 100 mod 8 = 4 因为你可以将它表示为 8*12 + 4 意味着你可以从中提取 12 个 8 但你将不再需要 4 来达到100. 在负数的情况下,你可以 "pull out" -13 个 8,然后你需要加 4(正数)才能达到 100。
因此,在您的情况下,您可以取出两个 3(以 -6 结尾),然后您需要剩余的正 2 才能达到 -4
可能需要数学家来解释:
https://math.stackexchange.com/questions/519845/modulo-of-a-negative-number
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
mod x 3 ... 0 1 2 0 1 2 0 1 2 0 1 2 ...
上面的序列满足任意x
的等式mod (x+3) 3 = mod x 3
。注意 0 1 2
是如何连续重复的。
请注意,在 Haskell 中我们都有
mod (-4) 3 == 2
rem (-4) 3 == -1
哪里
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
rem x 3 ... 0 -2 -1 0 -2 -1 0 1 2 0 1 2 ...
mod x y
是 div x y
的 "remainder",其中除法向下舍入(向-无穷大)。相反,rem x y
是 quot x y
的余数,其中除法向零舍入(因此 "remainder" 可以是负数)。
我正在努力思考 mod
函数。一切似乎都很好,直到我在 GHCi 中尝试 mod (-4) 3
。有人可以向我解释为什么 mod (-4) 3
等于 2
而不是 1
吗?真的很困扰我!
与正数的mod相同。在算术 modulo c 中,我们试图将任何 x 表示为 qc+r,其中 r 必须是一个非负整数。
我们为什么不通过示例对其进行测试?
取 −100 mod 8=4。这是因为 8⋅−13=−104。余数为4.
我会尝试解释...我的方式: qc + r 表示正数意味着 100 mod 8 = 4 因为你可以将它表示为 8*12 + 4 意味着你可以从中提取 12 个 8 但你将不再需要 4 来达到100. 在负数的情况下,你可以 "pull out" -13 个 8,然后你需要加 4(正数)才能达到 100。
因此,在您的情况下,您可以取出两个 3(以 -6 结尾),然后您需要剩余的正 2 才能达到 -4
可能需要数学家来解释: https://math.stackexchange.com/questions/519845/modulo-of-a-negative-number
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
mod x 3 ... 0 1 2 0 1 2 0 1 2 0 1 2 ...
上面的序列满足任意x
的等式mod (x+3) 3 = mod x 3
。注意 0 1 2
是如何连续重复的。
请注意,在 Haskell 中我们都有
mod (-4) 3 == 2
rem (-4) 3 == -1
哪里
integer x ... -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 ...
rem x 3 ... 0 -2 -1 0 -2 -1 0 1 2 0 1 2 ...
mod x y
是 div x y
的 "remainder",其中除法向下舍入(向-无穷大)。相反,rem x y
是 quot x y
的余数,其中除法向零舍入(因此 "remainder" 可以是负数)。