什么是模运算计算器?
模运算又被形象地称为"时钟运算":数值在达到固定的模数 \(n\) 之后就会"绕回"重新开始。本计算器用于求解形如 \((a\ \text{op}\ b) \bmod n\) 的表达式,其中运算可以是加法、减法、乘法,或者只是把单个数值 \(a\) 对 \(n\) 取模。它始终返回 最小非负余数,也就是一个位于 0 到 \(n - 1\) 之间的数。
使用方法
先输入 \(a\) 的值,选择一种运算,再填写 \(b\)(选择"仅取模"时该项会被忽略),最后设置模数 \(n\)。计算器会先算出表达式的原始结果,然后再对 \(n\) 取模。负数结果会被归化到标准的 0…n−1 区间内,因此 \(-1 \bmod 12\) 返回的是 11,而不是 \(-1\)。
公式详解
核心关系式为 $$r = (a\ \text{op}\ b) \bmod n.$$ 由于编程中常见的求余运算可能得到负数,我们采用欧几里得形式 $$r = \left(\left(x \bmod n\right) + n\right) \bmod n,$$ 以确保结果始终非负。这与数论、密码学和哈希算法中通行的数学约定保持一致。
实例演示
假设 \(a = 17\),运算为加法,\(b = 25\),\(n = 12\)。先计算 \(17 + 25 = 42\),再求 \(42 \bmod 12\):$$42 = 3 \times 12 + 6,$$ 所以余数为 6。换句话说,在 12 小时制的时钟上,从 17 点再走 25 个"小时",指针正好落在 6 的位置。
常见问题
"mod"是什么意思? 它表示除法之后取余数。例如 \(13 \bmod 5 = 3\),因为 \(13 = 2 \times 5 + 3\)。
为什么我输入的负数变成了正数? 因为我们返回的是最小非负余数。例如 \(-7 \bmod 5 = 3\):给 \(-7\) 加上两个 5(\(-7 + 10 = 3\)),结果就落入了 0…4 这个区间。
如果 \(n = 1\) 会怎样? 任何整数对 1 取模都同余于 0,所以结果永远是 0。