取模

对比计算

下载

包含本次计算的输入与结果,以及您对比过的所有附加计算。

求除法运算剩下的余数

**取模是求一个数除以另一个数后剩下的余数。**输入被除数和除数,此计算器会返回余数 — 与长除法 得到的结果相同,只是单独列出。

公式

amodn=anan\vC{a \bmod n} = \vA{a} - n \left\lfloor \frac{\vA{a}}{n} \right\rfloor

其中 aa 是被除数,nn 是除数 — 余数是减去仍能容纳于 aa 中的最大整数倍 nn 后所剩下 的部分。

示例演算

17 mod 5

    1. 17÷5=317 \div 5 = 32\vC{2} — 因为 5×3=155 \times 3 = 15,且 1715=217 - 15 = \vC{2}

需要考虑的关键因素

  • 不同编程语言和数学惯例处理负数的方式不同。 本计算器采用大多数编程语言(JavaScript、C、Java)常见的”余数符号跟随被除数”惯例——但 Python 的 % 运算符以及一些数学教科书采用的惯例是结果始终跟随除数的符号,对于相同的负数输入可能会给出看起来不同的答案。
  • a mod n 的结果总是介于 0 和 n-1 之间(采用非负惯例),这正是取模被用于”环绕”行为的原因。 这种有界范围的特性,使取模成为处理任何周期性问题的天然工具——时钟运算、星期几、数组索引的循环,以及各种重复模式,都依赖于同样的有界环绕行为。
  • 判断一个数是奇数还是偶数,其实就是对 2 取模。 任何数对 2 取模的结果不是 0(偶数)就是 1(奇数)——这是日常编程中取模最简单、最常见的实际用途之一。
  • 取模是密码学中的一项基础运算,尤其是与大质数结合使用时。 模运算(在固定模数下处理余数)是 RSA 等广泛使用的加密方案的基础——本计算器计算的这一基本余数概念,在真实的密码学应用中会扩展到数百位长的数字。

常见错误

  • 认为取模的结果总是非负数。 本计算器采用”余数符号跟随被除数”的惯例,这意味着负的被除数会产生负数(或零)余数——在比较不同工具的结果之前,请先确认您实际需要哪种惯例。
  • 把取模和普通除法混淆。 取模只返回剩下的余数,而不是商——17 除以 5 等于 3.4,但 17 mod 5 等于 2,是一个用途完全不同的数字。
  • 忘记模数为 0 时是未定义的。 除以零没有答案,a mod 0 同样没有答案——任何计算器或程序都应该将此视为错误,而不是悄悄返回 0 或被除数本身。
  • 混淆哪个数是被除数、哪个是除数。 除特殊情况外,a mod n 与 n mod a 并不相同——交换两者的顺序会使结果完全改变,而不仅仅是符号发生变化。

需要了解的信息

来源: 模运算.

常见问题

什么是取模运算?

取模(常写作“mod”或 %)是求一个数除以另一个数后剩下的余数。例如,17 mod 5 等于 2,因为 17 除以 5 等于 3 余 2。这与长除法得到的余数相同,只是单独列出。

负数的取模运算是如何工作的?

此计算器采用大多数编程语言使用的“被除数符号”惯例:余数与被除数的符号相同。例如,-7 mod 3 等于 -1(而非 2),因为 -7 除以 3 向零舍入为 -2,剩下 -1。有些数学课教授的惯例是余数始终非负 -- 如果您需要那种版本,请将除数加到负结果上。

取模运算有什么用?

取模运算出现在任何具有循环或周期性的场景中 -- 例如 12 小时制时钟报时(13 mod 12 = 1 点)、判断一个数是奇数还是偶数(n mod 2),或均匀分布重复图案。它也是编程和密码学中的核心构建模块。

为什么不同的计算器或编程语言对负数取模会给出不同的答案?

存在两种常见惯例:此计算器采用“被除数符号”惯例(与 JavaScript、C 和 Java 一致),余数的符号与被除数相同。Python 和一些数学教材则采用“除数符号”惯例,余数始终与除数符号一致。两者在数学上都是有效的惯例 -- 只是对负数的处理方式不同,这也是为什么相同的输入在不同工具中可能得到看似不同的结果。

取模运算在密码学中是如何使用的?

模运算 -- 即在固定模数下反复处理余数 -- 是 RSA 等广泛使用的加密方案的基础,这类方案依赖对非常大的质数进行取模运算。此计算器对小数字计算的这一基本余数概念,在实际密码系统中会扩展到长达数百位的数字。

确认您的年龄

为了创建账户,请告诉我们您的出生月份和年份。