天天看點

數論之歐幾裡德gcd

首先先說,歐幾裡德一共有倆,歐幾裡德和擴充歐幾裡德,前者非常簡單,後者直接變态(因為我太菜)

gcd = 最大公因數

普通歐幾裡德

 先說普通的,就是輾轉相除法求最大公因數,輾轉相除就是基本數論,不講了直接上代碼

數論之歐幾裡德gcd
數論之歐幾裡德gcd

View Code

遞歸終止的邊界就是a是b的倍數,也就是 a%b == 0

 其中保證b一定是小于a的,也就是說一直是b $\le$ a ,是以判斷b是否為0就好了

擴充歐幾裡德

然後就到了一個變态的東西了

先引入一個東西,叫裴蜀定理

搞定了裴蜀定理,下面就能證了:

我們這裡有兩個數,a,b $\in$ N 且 a,b互質。

對于a,b來說,一定存在 x,y $\in$ N滿足;

  ax + by = 1 = gcd( a,b )

已知gcd( a,b ) = gcd( b,a%b )

且因為a,b互質,則 gcd( b,a%b ) 的值一定也為 1,

是以也一定存在 bx' + ( a - b$\lfloor \frac{a}{b} \rfloor$ )y' = 1