23 % -5 = -2
23 % 5 = 3
明日試験があるので、これを理解する方法を誰か説明してもらえますか? 私が言いたいの-5 * -5 =25
は25 -2 = 23
、彼らが23
. これは正しいです?
Python では、剰余の符号は分母の符号と同じです (これは、分子の符号と同じである C などの言語とは異なります)。
a, b = divmod(n, d)
数学的には、 if 、 thenが常に保証されていますa*d + b == n
。
23//5 == 4
and 23//-5 == -5
(Python は常にフロア分割を行います)に注意してください。したがって、あなたが言ったように、 と が4*5 + 3 == 23
あります。-5*-5 - 2 == 23
目的のために問題を調べる最も簡単な方法は、次の定義を検討することです。
mod n = Rここで、剰余Rは0<=Rを満たす必要があります
したがって、mod -5演算の場合、0 <= R <-4、つまりRは0、-1、-2、-3、-4のいずれかになります。
つまり、Rを上記の範囲に入れるまで、aからnを効果的に減算(または加算)します。
それで
23%5は(23-4 * 5)= 23-20 = 3
しかし
23%-5は(23 + 5 *(-5))= 23-25 = -2
4*5 = 20 なので 23 % 5 = 3 で、23 を 20 で割ると余りが 3 になります。
23 % -5 については、その答えはプログラミング言語によって異なります。
Python の場合、除数の値が常に返されるため -2 であり、5*5 = 25 であり、Python で 23 を 25 で除算すると、-2 の剰余が得られます (除数が負であるため、負でなければならないため)。 ) したがって、25 - 2 = 23 になります。
正式な数学的定義では、b は正の整数であることに注意してください。
N=kM+R と書きましょう。
23 = -5*(-5) - 2、および 23 = 4*5 + 3 です。