算法筆記 之 歐幾得算法(求最大公約數)

一.最大公約數的定義

  兩個不全爲0的非負整數m和n的最大公約數即爲gcd(m,n),代表着能夠被m和n整除(即餘數爲0)的最大正整數。

二.關於歐幾得算法

  古希臘數學家、亞歷山大港的歐幾里得(公元前3世紀)所著的《幾何原本》,以系統論述幾何學而著稱,在其中的一卷裏,他簡要的描述了最大公約數算法。用現代數學的術語來表示,歐幾得算法(Euclid’s algorithm)採用的方法是重複應用下列等式,直到m mod n 等於0。

gcd(m,n) = gcd(n,m mod n);

因爲gcd(m,0) = m,m的最後取值也就是m和n的初值的最大公約數。

舉個例子:gcd(60,24) = gcd(24,12) = gcd(12,0) = 12

三.代碼實現

 


#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
    int x,y,z;
    cout << "請輸入你的要求最大公約數的兩個不全爲0的兩個整數:";
    cin >> x >> y;
    while(y!=0)
    {
        z = x % y; //將餘數保存下來
        x = y;     //進行賦值
        y = z;
    };
    cout << x << endl;
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章