文章目录
扩展欧几里得算法Exgcd
Exgcd算法内容
给定 a , b , c , d a,b,c,d a,b,c,d,求解 a x + b y = g c d ( a , b ) ax\ +by\ =\ gcd(a,b) ax +by = gcd(a,b)中的任意正数解 ( x , y ) (x,y) (x,y)
Exgcd求解一组整数解
我们可以根据裴蜀定理,证明方程一定有解。
由于欧几里得算法 g c d ( a , b ) = g c d ( b , a % b ) gcd(a,b)\ =\ gcd(b,a\ \%\ b) gcd(a,b) = gcd(b,a % b),则有:
a x + b y = b x + ( a % b ) ∗ y ax\ +by\ =bx\ +\ (a\ \%\ b)*y ax +by =bx + (a % b)∗y
用除法代替取模,则: a x + b y = b x ′ + y ′ ( a − [ a / b ] ∗ b ) ax\ +by\ =bx'+y'(a-[a/b]*b) ax +by =bx′+y′(a−[a/b]∗b)
通过乘法分配律和结合律的运算可得: a x + b y = a y ′ + b ( x ′ − [ a / b ] ∗ y ′ ) ax+by=ay'+b(x'-[a/b]*y') ax+by=ay′+b(x′−[a/b]∗y′)
其中, x ′ x' x′和 y ′ y' y