首先, 说一下最大公约数是什么: 公约数是指两个数共同的约数, 而最大公约数是指两个数的公约数中最大的.
辗转相除法
举个例子: 12和9
12 / 9 = 1 余 3
把除数变成被除数, 余数变成除数.
9 / 3 = 3 余 0
这时, 余数为0, 则最大公约数为除数.
最大公约数是3.
话不多说, 直接上代码:
#include <bits/stdc++.h>
using namespace std;
int a, b;
int dfs(int x, int y)
{
if(x % y == 0) return y;
else return dfs(y, x % y);
}
int main()
{
scanf("%d%d", &a, &b);
printf("%d\n", dfs(a, b));
return 0;
}
运行结果: