2

私はそのmod機能に頭を悩ませようとしています。mod (-4) 3GHCiで試すまでは、すべて問題ないように見えました。なぜmod (-4) 3が に等しく、2ではないのか説明してもらえ1ますか? それは本当に私を悩ませています!

4

2 に答える 2

14
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 ...

上記のシーケンスはmod (x+3) 3 = mod x 3、任意の方程式を満たしますx0 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 ydiv x y除算が切り捨てられる (-infinity に向かって)の「剰余」です。代わりに、除算がゼロに向かって丸められた余りになります (したがって、「余り」は負になる可能性があります) rem x yquot x y

于 2015-10-22T16:49:43.077 に答える
2

正数の mod と同じです。c を法とする算術演算では、任意の x を qc+r として表現しようとします。ここで、r は負でない整数でなければなりません。

例でテストしてみませんか?

-100 mod 8=4 を取ります。これは、8⋅−13=−104 であるためです。残りは4です。

私は説明しようとします...私のやり方:正のqc + rは、100 mod 8 = 4を意味します。これは、8 * 12 + 4として表現できるため、そこから12個の8を引き出すことができますが、 100 に到達するために 4 を必要とする終わり。負のケースでは、-13 の 8 を「引き出す」ことができ、100 に到達するには 4 (正の数) を追加する必要があります。

したがって、あなたの場合、2 つの 3 を引き出すことができます (-6 で終了)。-4 に到達するには、残りの正の 2 が必要です。

説明するために数学者が必要になる場合があります: https://math.stackexchange.com/questions/519845/modulo-of-a-negative-number

于 2015-10-22T16:46:01.433 に答える