什麼是模數運算?
模數運算寫作 a mod b,回傳的是被除數 a 除以模數(除數)b 後剩下的餘數。它在計算機科學與數學中無所不在:時鐘運算、雜湊(hashing)、在清單中循環取值、判斷整除性,以及密碼學都仰賴它。這個工具能計算正數、負數與小數的餘數,並提供完整的逐步證明。
如何使用
輸入被除數(a)與模數/除數(b)。兩個值都可以是負數或小數,按 +/- 按鈕即可快速切換正負號。除數不可為零,因為除以零在數學上沒有定義。計算結果會顯示餘數、整數商、可選的「向下取整模數」值,以及一段文字證明。
公式說明
本計算機採用截斷除法(truncated division)的慣例,與 C、Java 和 JavaScript 中 % 運算子的規則相同。首先將商數朝零的方向截斷:q = trunc(a / b)。接著餘數為 n = a - q*b。由於商數是截斷而非向下取整,餘數的正負號會與被除數 a 相同。舉例來說,在此 -5 mod 2 = -1;而另一種「向下取整(floored)」慣例(以次要輸出顯示)則會得到 1,正負號改為與除數一致。
實例演算
當 a = 5、b = 2 時:商數為 \( \operatorname{trunc}(5/2) = \operatorname{trunc}(2.5) = 2 \),餘數為 \( 5 - 2 \times 2 = 1 \)。證明:5 除以 2 得 2 餘 1,且 \( 2 \times 2 + 1 = 5 \)。所以 \( 5 \bmod 2 = 1 \)。小數的例子:7.5 mod 2 得 \( \operatorname{trunc}(3.75) = 3 \),餘數為 \( 7.5 - 3 \times 2 = 1.5 \)。
常見問題
為什麼 -5 mod 2 = -1 而不是 1?本工具採用程式語言的截斷慣例,因此餘數的正負號與被除數相同。當你需要與除數同號的結果時,請參考「向下取整模數」那一列,它顯示的是數學慣例的答案(1)。
如何判斷整除性?當 x mod b = 0 時,x 就剛好是 b 的倍數。例如 \( 496 \bmod 4 = 0 \)(為 4 的倍數),但 \( 226 \bmod 4 = 2 \)(不是倍數)。
除數可以是零嗎?不行。除以零沒有定義,所以當 b = 0 時計算機會回傳錯誤。