Preface
对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法。
对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用Exgcd解之即可到答案,Exgcd即扩展欧几里得算法。
这里是对于两个算法的学习小记
Content
欧几里得算法
由百度百科得
欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。
从整数的除法可知:对任给二整数a,b0,必有二整数q及r存在,使得a=qb+r,0≤rb,并且q及r是唯一存在的,这是数论的一条基本定理,整数的一系列重要性质都可以由此得到,如果反复利用这一基本定理,就可以得到因为每进行一次除法,余数就至少减一,而b是有限的正整数,所以最多进行b次,总可以得到一个余数是零的等式,即rn+1=0。
当然,百度说的这种话我都是看不懂的。
其实辗转相除法就是运用了Gcd(a,b)=Gcd(b,a mod b),直到a≡0(mod b),b即为所求。
这个方法的目的是为了达到可以将求解的两个数不断缩小,使得效率为对数级别。
那么,我们如何求证这个式子的正确性呢?
我们令
根据模运算的定义,可以有