在上一篇文章中,我们已经熟知了有关公约数和欧几里得算法的相关事宜。详情参见:欧几里得算法求最大公约数。本文将作为上篇文章内容的一个延续,简要阐述拓展欧几里得算法和中国剩余定理。
拓展欧几里得算法
拓展欧几里得算法(Extended Euclidian Algorithm),是欧几里得算法的扩展版本,用于在计算两个数的最大公约数 gcd ( a , b ) \gcd(a, b) gcd(a,b) 的同时,找到这两个整数的 贝祖系数(即这两个整数的线性组合等于其最大公约数的系数)。
举例而言,如果给定两个整数 a , b a, b a,b,我们不仅可以找到这两个整数的最大公约数,还可以找到两个整数 x , y x, y x,y,满足:
a x + b y = gcd ( a , b ) ax + by = \gcd(a, b) ax+by=gcd(a,b)
与此同时,我们也将这个方程称之为 贝祖等式(Bézout’s identity)。拓展欧几里得算法在数论和计算机应用方面有着极其突出的贡献和广泛的应用。例如求解线性同余方程,本文也将会围绕求解同余方程来展开。
线性同余方程
线性同余方程指的是形如 a x ≡ b ( m o d m ) ax \equiv b \pmod m ax≡b(modm) 的方程,其中 a a a 和 b b b 表示两个已知的整数常量, x x x 是需要求解的未知整数,符号 ≡ \equiv ≡ 表示同余关系,即等式两边同时对 m m m 取模结果相同。
具体地说,线性同余方程要求找到一个整数 x x x,使得 a x ax ax 除以 m m m 所得的余数等于 b b b,或者说 a x ax ax 与 b b b 对 m m m 取余后余数相等。该类型的问题通常存在唯一的解或者无解。
拓展欧几里得算法过程推导
拓展欧几里得算法与普通的欧几里得算法相同,都可以通过递归的方式来非常简便地计算出结果。
假设有两个非负整数 a a a 和 b b b(在满足 a ≤ b a \le b a≤b 的情况下),设 r = a m o d b r = a \mod b r=amodb,那么根据欧几里得算法可以得出结论 gcd ( a , b ) = gcd ( b , r ) \gcd(a, b) = \gcd(b, r) gcd(a,b)=gcd(b,r)。根据欧几里得算法的推到过程,可以得到:
b x 1 + r y 1 = gcd ( b , r ) bx_1 + ry_1 = \gcd(b, r) bx1+ry1

1381

被折叠的 条评论
为什么被折叠?



