1.1.1 扩展欧几里得
要说扩展必须先从它的非扩展版本说起,对于求两个数的最大公约数,我们有辗转相除法,其核心就是gcd(a,b)=gcd(b,a%b) (a>=b) (1)为什么呢,我们来证明一下令a=k*b+t 则a%b=t ,若设d是a,b的一个公约数,a%d==0 k*b%d==0 又因为(k*b+t)%d==0 所以t%d==0,这个d包含了a和b的最大公约数,于(1)得证。有了这个作为基础我们来看下扩展欧几里得到底是个什么东东,对于这样一个不定方程ax+by=c 方程有解当且仅当 c%gcd(a,b)==0,为什么呢,因为(ax+by)%gcd(a,b)==0,得证。于是对于ax1+by1=gcd(a,b) 该方程的一组解(x1,y1) 只需都乘上c/gcd(a,b),就可以得到原方程的一组(x,y)解。我们现在只需要考虑ax1+by1=gcd(a,b)上.由于gcd(a,b)=gcd(b,a%b),