什麼是模冪計算器?
模冪計算器用來求出 (底數指數) 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\),因此即使指數有數百位數,運算依然飛快。
實例演算
計算 \(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)。
為什麼不乾脆直接算次方就好?對大指數而言,中間的數字會有天文數字般的位數,導致溢位。在每一步都做模約簡,能讓數值始終維持很小,運算也因此高效率。