简单数学题,辗转相除法求最大公约数:
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return b ? gcd(b, a % b) : a; } // 递归形式
// int gcd(int a, int b) { while (b) { int t = a % b; a = b; b = t; } return a; } // 迭代形式
void solve()
{
int a, b;
cin >> a >> b;
cout << gcd(a, b) << endl;
}
signed main()
{
ios::sync_with_stdio(false);
int t;
// cin >> t;
t = 1;
while (t--)
solve();
return 0;
}
如果你不想自己定义 gcd
函数,也可以使用 <algorithm>
头文件中的 __gcd
函数。
除了最大公约数,还有最小公倍数,可以使用 a * b / gcd(a, b)
求得。