通过MCP连接 →

输入计算

数学公式

广告

结果

模幂运算结果
9
7^256 mod 13
底数 7
指数 256
模数 13

什么是幂取模计算器?

幂取模计算器用于计算 (底数指数) mod m,也就是把底数做幂运算后再除以模数所得到的余数。这个运算叫做"模幂运算",在数论和密码学中无处不在:RSA 加密、Diffie-Hellman 密钥交换、素性检验以及哈希函数都离不开它。如果直接计算(先算出那个巨大的幂,再取余数),对于大指数来说几乎不可能完成,因此我们改用一种高效的快速算法。

如何使用

输入三个整数:底数指数(零或正整数)以及模数 \(m\)(大于 1 的正整数)。点击计算,工具会返回一个位于 0 到 \(m-1\) 之间的结果。如果底数为负数,系统会自动将其化归为对应的非负余数。

公式原理详解

$$\text{result} = \text{Base}^{\text{Exponent}} \bmod \text{Modulus}$$

计算器并不会真的构造出底数指数这个庞大的数,而是采用平方乘法法(也称二进制快速幂)。算法会把指数转换成二进制来读取。初始结果设为 1,然后不断对底数取模 \(m\) 后做平方;每当指数当前的二进制位为 1 时,就把这个平方后的值乘进当前结果,并再次对 \(m\) 取模。由于每一步的中间数都不会超过 \(m^2\),即使指数有数百位,运算依然飞快。

Advertisement
平方-乘法模幂算法流程图
平方-乘法:扫描指数的各位,每步取平方,遇到位为1时再乘,并始终对m取模。

实例演算

计算 \(7^{256} \bmod 13\)。7 模 13 的阶是 12 的因数,且 \(7^{12} \equiv 1\)。由于 \(256 = 12 \times 21 + 4\),所以 $$7^{256} \equiv 7^4 = 2401 \equiv 9 \pmod{13}$$ 因此答案是 9——本工具瞬间就能算出,完全无需去构造那个长达 217 位的数字 \(7^{256}\)。

用反复平方计算 base^exponent mod m 的步骤表
每一步将当前值平方并对m取模,在指数位为1处乘以底数。

常见问题

如果模数是 1 会怎样? 任何整数对 1 取模都等于 0,所以结果为 0。

指数可以为 0 吗? 可以。任何数的 0 次幂都等于 1,所以结果是 \(1 \bmod m\)(当 \(m > 1\) 时即为 1)。

为什么不直接计算这个幂? 对于大指数,中间数会有天文数字般的位数,从而导致溢出。每一步都做取模运算可以让数值保持很小,使方法保持高效。

最后更新: