浅谈扩展gcd
前言
有一段时间觉得扩展gcd很简单,然后不知道为什么有一段时间又觉得迷惑不清,于是现在我来重新梳理一下。
扩展gcd是什么
a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b), a , b a,b a,b不完全为0,且 x , y x,y x,y都为整数解。求解。
扩展 g c d gcd gcd即用来求这个
注: [ ] [] []为向下取整的意思
求解
假设 a > b a>b a>b,
1. 显 然 当 b = 0 时 , g c d ( a , b ) = a 1.显然当b=0时,gcd(a,b)=a 1.显然当b=0时,gcd(a,b)=a。此时, x = 1. y = 0 x=1.y=0 x=1.y=0
2. a < > b a<>b a<>b
设 a x 1 + b y 1 = g c d ( a , b ) ax1+by1=gcd(a,b) ax1+by1=gcd(a,b)
设 b x 2 + ( a m o d b ) y 2 = g c d ( b , a m o d b ) bx2+(a mod b)y2=gcd(b,a mod b) bx2+(amodb)y2=gcd(b,amodb)
由 g c d ( a , b ) = g c d ( b , a m o d b ) gcd(a,b) = gcd(b,a mod b) gcd(a,b)=gcd(b,amodb)
可知
a x 1 + b y 1 = b x 2 + ( a m o d b ) y 2 ax1+by1=bx2+(a mod b)y2 ax1+