取模(余数)计算器
输入被除数与除数,在线求 a mod n 的余数与商;含负数时同时给出截断取余(C/Java/JS 的 %)、向下取整取模(Python 的 %)与欧几里得取模三种约定,大整数用 BigInt 精确计算。
要被取模的整数,可为负数或很大的整数。
不能为 0;结果即 a mod n 的余数。
余数 (a mod n)
2
被除数 a17除数 n5商(向零取整)3是否整除否
验算:17 = 3 × 5 + 2
怎么用
- 输入被除数:在「被除数 a」里填要取模的整数,例如 17;可以是负数或超大整数(工具用 BigInt 精确计算)。
- 输入除数(模):在「除数 n」里填模数,例如 5。除数不能为 0,否则余数无定义,工具会提示出错。
- 读取余数与商:每改一次输入立即计算,给出主结果余数 a mod n 与商,并用「a = 商 × n + 余数」一行验算。
- 对照负数下的三种约定:当被除数或除数为负时,截断取余(C/Java/JS 的 %)、向下取整取模(Python 的 %)、欧几里得取模(余数恒非负)结果不同,工具会同时列出三者,方便对照你所用语言。
核心要点
取模求的是整数除法的余数:对 a = 商 × n + 余数,余数即 a mod n。本工具给出余数、商与验算式,含负数时并列三种约定。
- 算例:
17 mod 5 = 2(17 = 3 × 5 + 2);20 mod 4 = 0(整除)。 - 负数分化:
−17 mod 5在截断取余为−2,在向下取整取模 / 欧几里得取模为3。 - 边界:除数不能为
0;被除数小于除数时商为 0、 余数即被除数本身。 - 大整数:计算过程用 BigInt 整数运算,超过 JavaScript 安全整数范围的大数也按字符串精确处理。
原理与公式
取模 / 取余:对被除数 a 与除数 n(n ≠ 0),存在唯一的商 q 与余数 r 使a = q × n + r,其中 r 就是 a mod n。
三种约定(只在含负数时分化)
差别在于「商如何取整」,进而决定余数的符号:
- 截断取余(T 型):商向零取整,余数符号随被除数。C/C++/Java/JavaScript/Go 的
%,中文常称「取余」。 - 向下取整取模(F 型):商向 −∞ 取整,余数符号随除数。Python 的
%与数学的「mod」,中文常称「取模」。 - 欧几里得取模:余数恒为非负,落在
[0, |n|)。
算例
17 mod 5:17 = 3 × 5 + 2 → 三种约定都得 2。−17 mod 5:截断取余 −17 = −3 × 5 + (−2) → −2; 向下取整 / 欧几里得 −17 = −4 × 5 + 3 → 3。
整除与奇偶:a mod n = 0 即 n 整除 a;a mod 2 为 0/1 分别对应偶/奇。
精度:全程用整数(BigInt)精确计算,不经过浮点,支持任意大整数, 所有计算在浏览器本地完成。
常见问题
- 取模(mod)和取余到底是什么?和除法什么关系?
- 取模就是求整数除法「除不尽」剩下的那部分。对被除数 a 和除数 n,先求商 q,再求余数 r,使得 a = q × n + r。例如 17 ÷ 5 = 3 余 2,所以 17 mod 5 = 2,这里商 3、余数 2。当 a 能被 n 整除时余数为 0(如 20 mod 4 = 0)。若被除数比除数小,则商为 0、余数就是被除数本身(如 3 mod 5 = 3)。本工具用整数(BigInt)精确计算,并给出「a = 商 × n + 余数」的验算式。
- 为什么负数取模会算出不同的答案?取余和取模有区别吗?
- 对正整数,取余和取模结果一样;只要出现负数,就要看用哪种约定,因为「商怎么取整」不同,余数也不同。常见三种:①截断取余(T 型)——商向零取整,余数符号跟被除数,这是 C/C++/Java/JavaScript/Go 的 % 运算符,中文常称「取余」;②向下取整取模(F 型)——商向负无穷取整,余数符号跟除数,这是 Python 的 % 和数学里的「mod」,中文常称「取模」;③欧几里得取模——余数恒为非负,落在 [0, |n|) 内。例如 −17 mod 5:截断取余为 −2,向下取整取模与欧几里得都为 3。三者都满足 a = 商 × n + 余数,只是商不同。本工具在含负数时会同时列出三种结果。
- 17 mod 5 和 −17 mod 5 分别等于多少?
- 17 mod 5:17 = 3 × 5 + 2,所以余数 2、商 3,三种约定一致。−17 mod 5 就会分化:截断取余(JavaScript 的 -17 % 5)得 −2,商 −3;向下取整取模(Python 的 -17 % 5)得 3,商 −4;欧几里得取模也得 3。可以验算:−4 × 5 + 3 = −17 ✓,−3 × 5 + (−2) = −17 ✓,两种商都对,区别只在余数取正还是取负。所以看代码结果要先确认所用语言的 % 属于哪种约定。
- 除数(模)可以是 0 吗?可以取非整数的模吗?
- 除数不能为 0。取模建立在整数除法之上,除以 0 没有商也就没有余数,属于未定义(多数语言会抛出「除以零」错误),本工具会直接提示。本工具面向整数取模;对小数,余数概念可以推广为 r = a − n × ⌊a ÷ n⌋(如 10.5 mod 3 = 1.5),但小数运算存在浮点误差,且实际编程中 % 对浮点的行为各语言不一,建议先化为整数再取模。
- 取模在实际中有什么用?
- 非常常用:①判断奇偶或整除——n mod 2 是 0 为偶数、1 为奇数,n mod k == 0 表示能被 k 整除;②循环 / 环形索引——数组下标 i mod length 可循环回到开头,时钟「(h + t) mod 12」算几点;③星期 / 周期——天数 mod 7 求星期几;④哈希表与分桶——key mod 桶数决定落在哪个桶;⑤校验码、随机数、密码学(如快速幂取模)都离不开取模。凡是「按固定周期循环」或「只关心余数」的场景,取模都是核心运算。
- 计算结果精确吗?支持很大的数吗?
- 精确,且支持任意大的整数。本工具全程用整数(BigInt)运算,不经过 JavaScript 浮点数,因此再大的数也不会丢精度、不会有舍入误差。若数字超过普通整数安全范围,直接把它当作一串数字输入即可(工具内部按大整数处理)。所有计算都在你的浏览器本地完成,不上传任何数据。