通过MCP连接 →

输入计算

数学公式

广告

结果

最小非负余数
6
结果位于 0 到 n − 1 之间
表达式的值(取模前) 42
模数 n 12

什么是模运算计算器?

模运算又被形象地称为"时钟运算":数值在达到固定的模数 \(n\) 之后就会"绕回"重新开始。本计算器用于求解形如 \((a\ \text{op}\ b) \bmod n\) 的表达式,其中运算可以是加法、减法、乘法,或者只是把单个数值 \(a\) 对 \(n\) 取模。它始终返回 最小非负余数,也就是一个位于 0 到 \(n - 1\) 之间的数。

从 0 到 11 的圆形数字环,箭头显示数值绕圈循环
模运算让数字绕着大小为 \(n\) 的圆环循环。

使用方法

先输入 \(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,$$ 以确保结果始终非负。这与数论、密码学和哈希算法中通行的数学约定保持一致。

Advertisement
划分为等长区块的数轴,显示负值映射到非负余数
负数映射到 0 到 n-1 之间相同的最小非负余数。

实例演示

假设 \(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。

最后更新: