通过MCP连接 →

输入计算

数学公式

广告

结果

ab mod m
445
余数
底数 (a) 4
指数 (b) 13
模数 (m) 497

什么是模幂运算?

模幂运算就是计算 \(a^b \bmod m\),也就是幂 \(a^b\) 除以模数 m 之后所得的余数。它是数论和密码学中最重要的运算之一,支撑着 RSA、Diffie–Hellman 密钥交换以及数字签名等众多算法。即便 \(a^b\) 大到天文数字,对 m 取模后的结果依然很小,完全可以计算出来。

类似时钟的圆圈,展示数字围绕模数循环
模运算让结果围绕一个固定的模数循环,就像时钟一样。

如何使用本计算器

请输入三个整数:底数 a、非负指数 b,以及模数 m(一个正整数)。点击计算,即可得到唯一的余数,其取值范围在 0 到 m−1 之间。底数可以为负数;在进行幂运算之前,程序会先把它规范化到合法的余数区间内。

公式详解

当 b 很大时,直接计算 \(a^b\) 是不现实的,因此本工具采用平方-乘算法(也称快速幂或二进制取幂)。算法将指数按二进制逐位读取:先令结果 \(r = 1\),并把底数对 m 取模;对于指数的每一个二进制位,都将底数自乘平方(对 m 取模);每当当前位为 1 时,就把结果乘以底数(对 m 取模)。这样只需大约 \(\log_2(b)\) 次乘法,而不必做 b 次乘法。

Advertisement
平方-乘算法步骤的流程图
平方-乘算法处理指数的二进制位,每一步都做平方,当某位为 1 时再做乘法。

实例演算

计算 \(4^{13} \bmod 497\)。指数 13 的二进制为 1101。按平方-乘法逐步推算: $$4^1 = 4, \quad 4^2 = 16, \quad 4^4 = 256, \quad 4^8 = 256^2 = 65536 \equiv 30 \pmod{497}.$$ 由于 \(13 = 8 + 4 + 1\),将对应的几个幂相乘: $$30 \times 256 \times 4 = 30720 \equiv 445 \pmod{497}.$$ 所以 \(4^{13} \bmod 497 = \mathbf{445}\)。

常见问题

如果指数是 0 怎么办? 任何数的 0 次方都等于 1,所以结果为 \(1 \bmod m\)(当 \(m = 1\) 时结果为 0)。

底数可以是负数吗? 可以。程序会先把负底数转换为其在 mod m 下等价的正余数,因此答案始终落在 0 到 m−1 之间。

为什么不直接算出 a^b 再取模? 在密码学应用的数量级下,\(a^b\) 会有上百万位数字。每一步都对 m 取模,能把数值始终保持得很小,从而让运算又快又稳。

最后更新: