演算法原理:
擴充套件歐幾里得演算法(Extended Euclidean Algorithm)不僅能計算兩個整數 a 和 m 的最大公約數 gcd(a, m),還能找到整數 x 和 y,使得 ax + my = gcd(a, m)。
這是貝祖等式(Bézout's identity)的一個應用。
演算法步驟:
- 歐幾里得演算法:使用輾轉相除法計算 gcd(a, m),記錄每一步的商和餘數
- 回代過程:從最後一步開始反向回代,逐步表示每個餘數為 a 和 m 的線性組合
- 求解係數:最終得到係數 x 和 y,滿足 ax + my = gcd(a, m)
模逆(Modular Inverse):
當 gcd(a, m) = 1 時(即 a 和 m 互質),存在 a 在模 m 下的乘法逆元,記作 a-1 mod m。此時 x 即為模逆,滿足 a × x ≡ 1 (mod m)。
如果 x 是負數,需要調整為正數:x' = x mod m。
應用場景:
- 密碼學:RSA 演算法中計算私鑰,需要求模逆
- 數論問題:求解線性同餘方程 ax ≡ b (mod m)
- 組合數學:計算組合數的模運算(Lucas 定理等)
- 競賽程式設計:快速計算模逆,避免除法導致的精度問題
時間複雜度:
O(log min(a, m)),與歐幾里得演算法相同