算法本質
有兩個數A,B,假設A>B, 他們的最大公約數等同於B與A%B的求最大公約數,有點像遞歸, 最後算到A’x%B’x恰好等於0時,B’x則爲所有數對之間的最大公約數
#include <iostream>
#include <string>
using namespace std;
int getMaxDivisor(int a, int b);
int core(int max, int min);
int main() {
cout << "請輸入第一個數" << endl;
int a;
cin >> a;
cout << "請輸入第二個數" << endl;
int b;
cin >> b;
cout << "要求的最大公約數的兩個數分別爲:a=" << a << ",b = " << b << endl;
cout << "最大公約數爲:" << getMaxDivisor(a, b) << endl;
}
int getMaxDivisor(int a, int b) {
if (a > b)
return core(a, b);
else return core(b, a);
}
int core(int max, int min) {
while (min != 0) {
int max_ = max;
max = min;
min = max_ % min;
}
return max;
}