模運算計算機
輸入
| 運算 | a mod n |
|---|---|
| a | 17 |
| 模數 n | 5 |
| 指數 b | 3 |
模運算計算機
計算 a mod n、模冪 a^b mod n 及模逆元 a⁻¹ mod n,涵蓋負數、大指數與互質判定,適用於數論與密碼學學習。
輸入
結果
輸入數值即可顯示計算結果。
詳細資料
模運算(modular arithmetic)是數論的分支,研究整數在固定模數下的餘數性質。若兩整數 a 與 b 相差 n 的倍數,則稱它們在模 n 意義下同餘,記作 a ≡ b (mod n)。本計算機支援三種核心運算:基本模運算、快速模冪,以及模逆元。
模運算(a mod n)
對正整數模數 n,數學定義的模運算 a mod n 是滿足以下恆等式的唯一整數 r:
其中 q = ⌊a / n⌋ 為整除商(floor quotient),r 為餘數。此定義保證結果恆為非負數。
計算範例。 以 a = 17、n = 5 為例:
故 17 mod 5 = 2。以時鐘比喻:在五格的環形刻度盤上走 17 格,最終落在第 2 格。
負數的情形。 以 a = −7、n = 5 為例:
故 −7 mod 5 = 3,而非 −2。數學定義確保 r 為非負數;C、JavaScript 等程式語言的 % 運算子採截斷除法,對負被除數會給出 −2,與此不同。
模冪(a^b mod n)
直接計算 a^b 再取餘數,在 b 很大時不可行,因為 a^b 的位數會隨 b 指數成長。快速模冪演算法(平方-乘法演算法)在每個步驟取餘數,使中間值始終維持在 [0, n − 1],所需乘法次數為 O(log₂ b)。
演算法將指數 b 以二進位分解,從最低有效位開始處理:
- 每步對當前底數平方,並對 n 取餘;
- 若該位元為 1,則將結果乘以當前底數,再對 n 取餘。
計算範例。 以 a = 17、b = 3、n = 5 為例:
故 17³ mod 5 = 3。直接驗算:17³ = 4913 = 982 × 5 + 3。
此演算法是 RSA 等公開金鑰密碼系統的核心,這些系統中的指數通常達數百位,直接計算在計算上不可行。
模逆元(a⁻¹ mod n)
整數 a 在模 n 下的逆元,是滿足以下條件的整數 x:
模逆元存在的充要條件是 gcd(a, n) = 1,即 a 與 n 互質。
- 當 n 為質數時,1 至 n − 1 的每個整數均有模逆元。
- 當 n 為合數時,與 n 共有公因數的整數不存在模逆元。
擴展歐幾里得演算法可在逆元存在時求出其值。標準歐幾里得演算法只計算最大公因數,擴展版本同時追蹤線性組合係數,找到整數 s 與 t 使得:
當 gcd(a, n) = 1 時,s 即為所求的模逆元。
計算範例。 以 a = 3、n = 5 為例,對 5 和 3 執行擴展歐幾里得演算法:
- 5 = 1 × 3 + 2
- 3 = 1 × 2 + 1
回代整理:
故 3 × 2 ≡ 1 (mod 5),即 3⁻¹ ≡ 2 (mod 5)。驗算:3 × 2 = 6 = 1 × 5 + 1。
實際應用
模運算是數學與資訊科學的重要基礎,應用範圍廣泛:
- 公開金鑰密碼學:RSA 加密以明文的大指數模大合數進行,解密則使用加密指數的模逆元。模冪與模逆元的計算效率,直接決定密碼系統的可行性。
- 校驗碼:ISBN-13、IBAN 及信用卡號碼的 Luhn 演算法,均透過模運算偵測輸入錯誤。
- 日曆計算:星期幾以模 7 計算;農曆、復活節等曆法計算也涉及同餘關係。
- 雜湊表:鍵值的 bucket 索引以「鍵 mod 表大小」決定,使資料均勻分布。
- 環形緩衝區:讀寫指標以「索引 mod 容量」循環推進,無需判斷邊界。
整除商與帶餘除法恆等式
對所有滿足 n ≥ 1 的整數對 (a, n),整除商 q = ⌊a / n⌋ 與餘數 r = a mod n 符合帶餘除法恆等式:
本計算機同時顯示 r 與 q,可對任意輸入直接驗證此恆等式。
常見問題(FAQ)
負數的模運算與程式語言的餘數運算有何不同?
數學定義的模運算結果恆為非負數,落在 [0, n − 1] 範圍內。以 −7 mod 5 為例:⌊−7 / 5⌋ = −2,故 −7 = (−2) × 5 + 3,結果為 3。C、JavaScript 等程式語言的 % 運算子採截斷除法,對負被除數會傳回負值(如 −7 % 5 = −2)。本計算機採用數學定義,結果恆非負。
17^1000 mod 5 這類大指數的模冪如何有效率地計算?
快速模冪演算法(又稱平方-乘法演算法)將指數以二進位分解,在每一步驟對模數取餘,使中間值始終維持在 [0, n − 1] 的範圍內。所需乘法次數為 O(log b),而非直接計算所需的 b − 1 次,適合處理密碼學中的超大指數。
模逆元在什麼條件下存在?
模逆元 a⁻¹ mod n 存在的充要條件是 gcd(a, n) = 1,即 a 與 n 互質。當 n 為質數時,1 到 n − 1 的每個整數均有模逆元。當 n 為合數時,與 n 共有公因數的整數不存在模逆元。
模運算在哪些實際領域中有應用?
模運算是現代數學與資訊科學的重要基礎:公開金鑰密碼學(RSA 的加解密均仰賴模冪與模逆元)、校驗碼(ISBN、IBAN、信用卡 Luhn 演算法)、日曆計算(星期幾以模 7 計算)、雜湊表(鍵值對 bucket 的索引 = 鍵 mod 表大小),以及環形緩衝區(讀寫指標以模容量推進)。