扩展欧几里得算法是计算模m乘法逆元最有效的方法。这个算法不仅找到两个整数的最大公约数(GCD),还将GCD表示为原始数的线性组合,这直接给出了乘法逆元。
算法概述
扩展欧几里得算法通过在整个计算过程中维护方程gcd(a, m) = s×a + t×m来工作。当gcd(a, m) = 1时,系数s给出了a对模m的乘法逆元。该算法使用与标准欧几里得算法相同的除法步骤,但跟踪线性组合系数。
逐步过程
1. 初始化:oldr = a, r = m, olds = 1, s = 0, oldt = 0, t = 1。2. 当r ≠ 0时:计算商q = oldr ÷ r,使用递推关系更新值。3. 当r = 0时,oldr包含GCD,olds包含逆元(如果GCD = 1)。4. 如果结果为负数,加m得到正的代表。
实现细节
算法在每个步骤中维护不变量oldr = olds×a + old_t×m和r = s×a + t×m。时间复杂度为O(log min(a, m)),即使对于大数也非常高效。这种效率对于使用大素数的密码学应用至关重要。