什么是取模运算?
取模运算通常写作 a mod b,表示被除数 a 除以模数(除数)b 之后剩下的余数。它在计算机科学和数学中无处不在:时钟运算、哈希算法、循环遍历列表、判断整除关系以及密码学,都离不开它。本工具可以对正数、负数和小数求余数,并附上完整的分步推导过程。
如何使用
分别填入 被除数(a) 和 模数 / 除数(b)。两个数都可以是负数或小数——点击 +/- 按钮即可快速切换正负号。除数不能为 0,因为除以 0 在数学上没有定义。计算结果会显示余数、整数商、可选的向下取整取模值,以及一段文字推导。
公式解析
本计算器采用 截断除法(truncated division) 约定,这也是 C、Java 和 JavaScript 中 % 运算符所遵循的规则。第一步,把商向零截断:q = trunc(a / b);第二步,求余数 n = a - q*b。由于商是向零截断而非向下取整,所以余数的符号与被除数 a 相同。例如本工具中 -5 mod 2 = -1;而另一种"向下取整"约定(作为附加结果显示)会给出 1,此时余数的符号与除数相同。
$$\text{a} \bmod \text{b} = \text{a} - \left\lfloor \dfrac{\text{a}}{\text{b}} \right\rceil_{0} \cdot \text{b}$$
$$\begin{gathered} r = \text{a} - q \cdot \text{b} \\[1.5em] \text{where}\quad \left\{ \begin{aligned} q &= \operatorname{trunc}\!\left( \dfrac{\text{a}}{\text{b}} \right) \\ \text{b} &\neq 0 \end{aligned} \right. \end{gathered}$$
计算示例
设 \(a = 5\),\(b = 2\):商为 \(\operatorname{trunc}(5/2) = \operatorname{trunc}(2.5) = 2\),余数为 \(5 - 2 \times 2 = 1\)。推导:\(5 \div 2 = 2\) 余 1,且 \(2 \times 2 + 1 = 5\),所以 \(5 \bmod 2 = 1\)。再看一个小数的例子:\(7.5 \bmod 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 mod 4 = 0(是倍数),而 226 mod 4 = 2(不是倍数)。
除数可以是 0 吗?不可以。除以 0 在数学上没有定义,所以当 b = 0 时计算器会返回错误提示。