余り・商の計算(整数の割り算)
割られる数と割る数を入れると、商と余りを計算します。負の数のときに迷いやすい「0以上の余り」と、プログラミングでよく使われる余り(JavaScriptの%と同じ求め方)の、両方を比べて出します。
計算方法
あまりが0以上になる求め方 商を商 =(Bの符号)× floor(A ÷ |B|)とすると、あまりはあまり = A − B×商で、常に0以上|B|未満になります。
例:−7 ÷ 3 は、商が−3、あまりが2です(−7 = 3×(−3)+2)。
プログラミングでよく使う求め方 多くのプログラミング言語の「%」演算子は、0に近いほうに切り捨てた商(トランケート)を使うため、あまりの符号がAと同じになります。同じ−7 ÷ 3でも、この求め方では商が−2、あまりが−1になります。
合同式(mod) 「A ≡ r(mod m)」は、Aをmでわったときのあまりがrであることを表します。合同式では、あまりは必ず0以上m未満の求め方を使います。
2つの求め方の違いを説明します。割られる数がマイナスのとき、あまりの決め方が2通りあります。あまりを必ず0以上にする求め方は、合同式(mod)で使われるものです。もう1つは多くのプログラミング言語の剰余演算子と同じで、あまりに割られる数の符号がつきます。どちらもA=B×商+あまりは成り立ちます。
例:−7÷3なら、0以上にする求め方では商−3・あまり2です。プログラミングでよく使う求め方では商−2・あまり−1になります。
気をつけること。割る数は整数で入れてください。0で割ることはできません。合同式では−7≡2(mod 3)のように、0以上の求め方を使います。プログラムの結果と手計算が合わないときは、どちらの求め方かを確かめてください。
出典:整数の割り算における商とあまりの定義、合同式(mod)の定義(初等整数論の基本)
よくある質問
負の数の余りがマイナスになることはある?
「あまりが0以上になる求め方」では、なりません。ただし、プログラミング言語の「%」演算子では、割られる数がマイナスだと、あまりもマイナスになることがあります。
合同式(mod)とは?
「mで割ったときのあまりが同じ数どうしを、同じなかまとみなす」考え方です。時計の12時間表記などが身近な例です。
0で割るとどうなる?
商もあまりも決まらないため、計算できません。
商とあまりの関係は?
どちらの求め方でも「割られる数 = 割る数 × 商 + あまり」が必ず成り立ちます。
割る数がマイナスのときは?
あまりが0以上になる求め方では、あまりは0以上|割る数|未満のままです。商の符号が変わります。