今回は負の剰余の話です。 剰余は正の数同士の場合は何も問題ないのですが、負の剰余をとってしまうとはまることがあります。 なぜなら言語処理系依存だからです。C++, pythonのそれぞれを比較すると下記のようになります。 (C) -2 % 5 = -2 (python) -2 % 5 = 3 計算結果は違っていますが、この二つプログラミング言語の剰余は、両者とも、以下の等式が成り立つような値と定義されています。 x == (x / y)*y + x%y つまり剰余の値は、 x % y = (x / y)*y - x という式で得られます。 剰余の計算結果が異なっている原因は負の値に対する除算の値が異なるからです。 (C) -2 / 5 = 0 (python) -2 / 5 = -1 下のグラフを見ていただければわかると思うのですが、pythonの場合、除算の結果は「x 以下の最も大きい