透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

模冪運算結果
9
7^256 mod 13
底數 7
指數 256
模數 13

什麼是模冪計算器?

模冪計算器用來求出 (底數指數) mod m,也就是把底數做次方運算後,再除以模數所得到的餘數。這項運算稱為「模冪運算」(modular exponentiation),在數論與密碼學中無所不在:它是 RSA 加密、Diffie-Hellman 金鑰交換、質數測試與雜湊函數的核心。若直接硬算(先把那個巨大的次方值算出來,再取餘數),對大指數而言根本不可能完成,因此我們改用更聰明的快速演算法。

如何使用

輸入三個整數:底數指數(0 或正整數),以及模數 \(m\)(大於 1 的正整數)。按下計算後,工具會回傳介於 0 到 \(m-1\) 之間的結果。若底數為負數,系統會自動將它換算成正確的非負餘數。

公式原理解說

計算器要計算的是:

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

計算器不會去建構底數指數這個龐大的數字,而是採用平方-乘法法(square-and-multiply,又稱二進位次方法)。它會把指數寫成二進位來逐位讀取:先令結果為 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)。

為什麼不乾脆直接算次方就好?對大指數而言,中間的數字會有天文數字般的位數,導致溢位。在每一步都做模約簡,能讓數值始終維持很小,運算也因此高效率。

最後更新: