a mod n 同时给两种约定 —— 你语言里 % 返回的那个,和数学上恒非负的那个,外加向下取整商、模幂、模逆元
- 本地处理
- 分类 计算度量
- 适合 买东西、做计划、训练或排期前,先算出大概范围。
截断取余(a % n)
-1
JS / C / Java / Go / Rust 里的 % 运算符,符号随被除数 a。
欧几里得 / 数学取模
2
结果恒在 [0, |n|),数论、时钟运算和密码学用的就是它。
向下取整商 ⌊a / n⌋
-3
验算: -7 = (-3)·3 + 2
与欧几里得取模配套:a = q·n + r。
模逆元 a⁻¹ mod n
a⁻¹ ≡ 2 (mod n),因为 a·2 ≡ 1
这个工具能做什么
一个取模计算器,专门回答每个程序员第一次碰到负数时都会栽跟头的问题: -7 mod 3 到底等于几?你语言里的 % 运算符说是 -1,数学家说是 2。在各自 的约定下两个都对,所以这个工具把两者并排算出来,让你不必再猜。"截断 取余"就是 JavaScript、C、Java、Go、Rust 里 % 返回的结果,符号跟着被除数 走;"欧几里得取模"是数学上的余数,恒在 [0, |n|) 区间内,时钟运算、环形 缓冲区下标、密码学要的正是这个。除了两个余数,你还会得到让除法恒等式 a = q·n + r 严格成立的向下取整商;用快速幂(平方-乘)算出的模幂 aᵇ mod n (所以 2^1000000 mod 97 瞬间出结果,全程不构造那个天文数字般的中间值); 以及用扩展欧几里得算法求出的模逆元 —— 当 a 与 n 有公因子、逆元不存在时, 会明确告诉你"逆元不存在",而不是返回一个错误的数。每个值都用 JavaScript BigInt 计算,所以 40 位的操作数也保持精确,不会像 double 那样悄悄四舍五入。 输入会写进 URL,分享链接能复现完全相同的计算。
工具细节
- 输入
- 表单输入
- 页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
- 输出
- 即时结果 + 复制
- 结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
- 隐私
- 浏览器本地处理
- 主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
- 保存 / 分享
- 可分享链接状态
- 关键设置会进入 URL,复制链接后别人能复现同一组参数。
- 性能预算
- 首屏 JS ≤ 10 KB
- 没有声明 WASM 依赖,适合快速打开和移动端使用。
- 适用场景
- 计算度量 · 程序员
- 分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。
怎么用
-
1. 输入
把内容粘贴或拖入工具面板。
-
2. 处理
点击按钮,在浏览器内本地处理,文件不上传。
-
3. 复制 / 下载
一键复制结果或下载到本地。
取模计算器 适合怎么用
适合快速估算、对比和规划数字,帮你在做最终决定前先有底。
适合计算任务
- 买东西、做计划、训练或排期前,先算出大概范围。
- 一次只改一个输入,对比不同方案。
- 把模糊假设变成能讨论的数字。
计算检查项
- 认真核对单位、日期、比例和取整方式。
- 健康、金融、税务、法律相关结果只能做规划参考,不能替代专业意见。
- 重要结果要保存输入条件,方便以后复算。
下一步可以接着做
这些入口会把当前任务接到更完整的工具链里。
真实使用场景
给可能变负的数组下标做回绕
你在一个长度为 8 的列表里把光标往左移,希望它绕回末尾:下标 -1 应该 变成 7。但 JavaScript 里 -1 % 8 是 -1,拿它做下标会抛错或返回 undefined。填 a = -1、n = 8,读欧几里得结果:7。这就是你代码里要的 ((i % n) + n) % n,在这里一次性确认,而不是在生产环境调一个差一的 回绕 bug。
算星期几
用 Zeller 之类的日期公式算到"天数" 17,你想对 7 取模来定星期。正数 时两种约定一致(17 mod 7 = 3),但当某个偏移算成负数 —— 比如 -4 mod 7 —— 你要的是 3,不是 -4。计算器给出欧几里得的 3,你的星期查找表就永远 不会越界。
哈希分桶且不产生负槽位
一个字符串哈希返回带符号的 32 位值,可能为负,你用 hash mod 1009 把它 分到 1009 个槽里。用截断的 %,负哈希会给出负的桶下标,直接崩溃。把 哈希值和 1009 填进来,取欧几里得那一列,你每次都拿到合法的 0..1008 槽位。
手算 RSA 私钥指数
教学版 RSA 例子里 e = 17、φ(n) = 3120,私钥 d 就是 e 模 φ(n) 的逆元。 填 a = 17、n = 3120,工具用扩展欧几里得算法返回 d = 2753;再用模幂 字段验算:17·2753 mod 3120 应该是 1。不用纸笔做欧几里得回代。
验算密码学练习里的模幂
一道 Diffie–Hellman 例题要算 5^117 mod 23。把 5^117 敲进普通计算器会 溢出或四舍五入;这里你填 a = 5、n = 23、指数 117,瞬间读到精确答案, 因为工具用平方-乘配合 BigInt,从不构造那个 80 位的幂。
常见踩坑
以为 C 系语言里 -7 % 3 是 2。它是 -1 —— 那里的 % 运算符取被除数的符号。如果你要恒非负的结果,用欧几里得那一列,或在代码里写 ((a % n) + n) % n。
直接用裸的 % 结果给数组做下标。多数语言里负被除数会给出负下标,直接越界。给环形缓冲区或哈希桶做下标前,先用欧几里得取模回绕。
以为每个数都有模逆元。a 模 n 的逆元只在 gcd(a, n) = 1 时存在。如果 a 与 n 有公因子就没有逆元,随手套个公式得到的任何值都是错的。
隐私说明
每一步计算 —— 两个余数、向下取整商、模幂、扩展欧几里得求逆 —— 都是在你 浏览器标签页里运行的纯 JavaScript。你输入的任何数都不会离开页面,不记录, 也没有任何外部 API 调用。有一点要留意:可分享链接会把你的输入写进 query string(例如 ?a=-7&n=3),所以把分享链接粘到别处时,对方服务器的访问日志 会留下这些数。做作业无所谓;如果某个值敏感 —— 比如 RSA 私钥指数 —— 请手动 复制结果,不要分享 URL。
常见问题
类似工具组合
做你这行的人, 还会一起用这些。