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

Greatest Common Divisor(GCD)算法

歐幾里得算法聽說是最先的算法,用於計算最大公約數,也是數論的基礎算法之一。測試

 

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

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

2.優勢code

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

3.過程class

四、程序代碼test

#define ll long long

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

這個算法,必定要記住,他很重要。效率

相關文章
相關標籤/搜索