透過 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}\) 是不可能的,因此本工具採用 平方-乘法(又稱快速冪或二進位冪)演算法。其核心公式為:

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

指數會以二進位的形式逐位讀取:先設定結果 \(r = 1\),並把底數對 m 取模;接著針對指數的每一個位元,把底數平方(mod m),只要當前位元為 1,就把結果再乘上底數(mod m)。如此一來,只需大約 \(\log_2(b)\) 次乘法,而非高達 b 次。

Advertisement
平方-乘演算法步驟的流程圖
平方-乘演算法處理指數的二進位位,每一步都做平方,當某位為 1 時再做乘法。

實例演算

計算 \(4^{13} \bmod 497\)。指數 13 換成二進位是 1101。依照平方-乘法逐步推算:\(4^1 = 4\),\(4^2 = 16\),\(4^4 = 256\),\(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 = \) 445

常見問題

如果指數是 0 會怎樣? 任何數的 0 次方都是 1,所以結果是 1 mod m(當 m = 1 時則為 0)。

底數可以是負數嗎? 可以。負底數會先被換算成等價的正餘數(mod m),因此答案永遠介於 0 到 m−1 之間。

為什麼不乾脆先算 \(a^{b}\) 再取模? 在密碼學等級的數字規模下,\(a^{b}\) 會有數百萬位數。每一步都先對 m 取模,可以讓數字維持很小,運算也更快速。

最後更新: