1. 程式人生 > >奧賽-歐幾里得演算法-最大公約數

奧賽-歐幾里得演算法-最大公約數

Greatest Common Divisor(GCD)

歐幾里得演算法據說是最早的演算法,用於計算最大公約數,也是數論的基礎演算法之一。

 

1.歐幾里德演算法的思想:

歐幾里德演算法的思想基於輾轉相除法的原理,輾轉相除法是歐幾里德演算法的核心思想,歐幾里德演算法說白了其實就是輾轉相除法的計算機演算法的實現而已。下面我們先說說輾轉相除法,輾轉相除法的內容:如果用gcd(a,b)來表示a和b的最大公約數,那麼根據輾轉相除法的原理,有gcd(a,b)=gcd(b,a mod (b)),其中mod()表示模運算,並且不妨讓a>b,這樣方便於模運算。

2.優點

通過模運算的餘數是最大公約數之間存在的整數倍的關係,來給比較大的數字進行降維,方便手算;同時,也避免了在可行區間內進行全域性的最大公約數的判斷測試,只需要選取其餘數進行相應的計算就可以直接得到最大公約數,大大提高了運算效率。

3.過程

4、程式程式碼

#define ll long long

ll gcd(ll a, ll b) {
return !b ? a : gcd(b, a%b); }

這個演算法,一定要記住,他很重要。