拓展的欧几里得算法求乘法逆元
拓展的欧几里得算法又叫扩展欧几里得算法,是一种求解一元线性同余方程的方法,可以用来求解乘法逆元。假设要求a在模n下的乘法逆元,即到x满足ax ≡ 1 (mod n)。
算法步骤如下:
1. 用欧几里得算法求出a和n的最大公约数gcd(a,n)以及对应的系数s和t。
2. 如果gcd(a,n)不等于1,则a在模n下没有乘法逆元。
3. 如果gcd(a,n)等于1,则ax ≡ 1 (mod n)可以转化为ax + ny = 1的形式,其中y为x的系数。
4. 用扩展的欧几里得算法求出gcd(a,n)的系数s和t,使得sa + tn = gcd(a,n)。
booth算法乘法例题讲解 5. 把等式ax + ny = 1中的a用sa + tn替换,得到(sx + n'y)a + (ty) n = 1,其中n'为n的系数。
6. 取模得到(sx + n'y)a ≡ 1 (mod n),即ax在模n下的乘法逆元为sx + n'y。
举例说明:
计算16在模21下的乘法逆元。
1. 计算gcd(16,21):21 = 1 × 16 + 5,16 = 3 × 5 + 1,gcd(16,21) = 1。
2. gcd(16,21) = 1,继续下一步。
3. 转化为16x + 21y = 1的形式,求出y的系数。
4. 用扩展的欧几里得算法求出gcd(16,21)的系数s和t,使得16s + 21t = gcd(16,21),得到s = 11,t = -8。
5. 代入得到(11x - 8y)16 + 21y = 1,即(11x - 8y)16 ≡ 1 (mod 21)。
6. 求解得到x = 11,即16在模21下的乘法逆元为11。
注意事项:
1. 模数n必须是正整数,且与a互质,否则a在模n下没有乘法逆元。
2. 扩展的欧几里得算法有多组解,根据具体问题设置取值范围。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论