什么是幂取模计算器?
幂取模计算器用于计算 (底数指数) 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\),即使指数有数百位,运算依然飞快。
实例演算
计算 \(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}\)。
常见问题
如果模数是 1 会怎样? 任何整数对 1 取模都等于 0,所以结果为 0。
指数可以为 0 吗? 可以。任何数的 0 次幂都等于 1,所以结果是 \(1 \bmod m\)(当 \(m > 1\) 时即为 1)。
为什么不直接计算这个幂? 对于大指数,中间数会有天文数字般的位数,从而导致溢出。每一步都做取模运算可以让数值保持很小,使方法保持高效。