算法本质
有两个数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;
}