前言
由于复习CSP,我的blog咕咕咕了一个多月。大有洛谷的风范 今天,我来写一下自己学习gcd及exgcd的感受。
详解gcd及exgcd
gcd
什么是gcd
gcd指的是Greatest Common Divisor,就是两个数的最大公因数。
通俗来讲, gcd ( a , b ) \gcd(a,b) gcd(a,b)就是最大化一个 A n s Ans Ans,使得 A n s ∣ a , A n s ∣ b Ans|a\\,Ans|b Ans∣a,Ans∣b。
举个例子:
20 20 20的因数有 1 , 2 , 4 , 5 , 10 , 20 1,2,4,5,10,20 1,2,4,5,10,20。
15 15 15的因数有 1 , 3 , 5 , 15 1,3,5,15 1,3,5,15。
所以 gcd ( 20 , 15 ) = 5 \gcd(20,15)=5 gcd(20,15)=5。
如何求gcd
想必各位在高中都学过辗转相除法和更相减损之术,这里只讲辗转相除法。
辗转相除法
首先不妨设 x ≤ y x\le y x≤y,则 gcd ( x , y ) = gcd ( x , x + y ) = gcd ( x , y − x ) \gcd(x,y)=\gcd(x,x+y)=\gcd(x,y-x) gcd(x,y)<