取模(余数)计算器

输入被除数与除数,在线求 a mod n 的余数与商;含负数时同时给出截断取余(C/Java/JS 的 %)、向下取整取模(Python 的 %)与欧几里得取模三种约定,大整数用 BigInt 精确计算。

要被取模的整数,可为负数或很大的整数。

不能为 0;结果即 a mod n 的余数。

余数 (a mod n)
2
被除数 a17除数 n5商(向零取整)3是否整除

验算:17 = 3 × 5 + 2

怎么用

  1. 输入被除数在「被除数 a」里填要取模的整数,例如 17;可以是负数或超大整数(工具用 BigInt 精确计算)。
  2. 输入除数(模)在「除数 n」里填模数,例如 5。除数不能为 0,否则余数无定义,工具会提示出错。
  3. 读取余数与商每改一次输入立即计算,给出主结果余数 a mod n 与商,并用「a = 商 × n + 余数」一行验算。
  4. 对照负数下的三种约定当被除数或除数为负时,截断取余(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 与除数 nn ≠ 0),存在唯一的商 q 与余数 r 使a = q × n + r,其中 r 就是 a mod n

三种约定(只在含负数时分化)

差别在于「商如何取整」,进而决定余数的符号:

  • 截断取余(T 型):商向零取整,余数符号随被除数。C/C++/Java/JavaScript/Go 的 %,中文常称「取余」。
  • 向下取整取模(F 型):商向 −∞ 取整,余数符号随除数。Python 的 % 与数学的「mod」,中文常称「取模」。
  • 欧几里得取模:余数恒为非负,落在 [0, |n|)

算例

17 mod 517 = 3 × 5 + 2 → 三种约定都得 2
−17 mod 5:截断取余 −17 = −3 × 5 + (−2)−2; 向下取整 / 欧几里得 −17 = −4 × 5 + 33

整除与奇偶a mod n = 0n 整除 aa 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 浮点数,因此再大的数也不会丢精度、不会有舍入误差。若数字超过普通整数安全范围,直接把它当作一串数字输入即可(工具内部按大整数处理)。所有计算都在你的浏览器本地完成,不上传任何数据。

来源与更新

取模(余数)的定义与三种约定的依据(检索日期 2026-07-19):

  • 余数、模运算与 a = q × n + r 的定义,参考 Wolfram MathWorld Mod Congruence
  • 截断(T 型)与向下取整(F 型)等除法约定下余数符号的差异,参考 Daan Leijen《Division and Modulus for Computer Scientists》 (Microsoft Research)
  • JavaScript 取余运算符 %(截断取余,余数随被除数符号),参考 MDN Remainder (%)
  • Python %(向下取整取模,余数随除数符号),参考 Python 官方文档 Binary arithmetic operations

本工具为纯数学计算,不含税率、利率等会随政策变化的参数,结果以通用数学定义为准。 内容经本站编辑整理与核对,仅供学习与参考。

最近更新:2026-07-19

本工具按通用数学定义计算整数取模(余数),结果为精确整数值,供学习与日常参考。