1.程序说明
输入:整数a,b
输出:a,b的最大公因数(a,b)
运行结果:
2.实现思路
首先获取a,b中较大的数和较小的数
max = a > b ? a : b;
min = a < b ? a : b;
然后使用欧几里得辗转相除法求最大公因数
int f(int a, int b) {
int i = 0;
while (b != 0) {
i = a % b;
a = b;
b = i;
}
return a;
}
欧几里得算法的流程图如下(图片来源):
3.完整代码
#include<iostream>
using namespace std;
int f(int a, int b) {
int i = 0;
while (b != 0) {
i = a % b;
a = b;
b = i;
}
return a;
}
int main() {
int max, min, a, b, ans;
cin >> a >> b;
max = a > b ? a : b;
min = a < b ? a : b;
ans = f(max, min);
cout << ans;
return 0;
}