gcd(最大公约数)和lcm(最小公倍数)的代码

 我们只需要记住a*b = gcd(a,b)*lcm(a,b)。

gcd(最大公约数)和lcm(最小公倍数)的代码_第1张图片

//gcd和lcm a*b = gcd(a,b)*lcm(a,b)
#include
using namespace std;
using ll = long long;
const int N = 2e6 + 9;

ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); }
ll lcm(ll a, ll b) { return a / gcd(a, b) * b; };//a/gcd(a,b)一定是一个整数,防止爆int

void slove()
{
	ll a, b; cin >> a >> b;
	cout << gcd(a, b) << " " << lcm(a, b) << '\n';
}

int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int t; cin >> t;
	while (t--)slove();
	return 0;
}

你可能感兴趣的:(c++,算法)