求两个正整数 a,b 的最大公因数与最小公倍数。

两个数的最大公因数指的是 a,b 共有的约数中最大的一个。

两个数的最小公倍数指的是 a,b 共有的倍数中最小的一个。

输入格式:

在一行中给出两个数字 a,b (1<=a,b<=1,000,000,000)

输出格式:

在一行中以空格分隔输出 a,b 的最大公因数与最小公倍数。

输入样例:

1
6 9

输出样例:

1
3 18

思路

求最大公约数和最小公倍数。C++中的<algorithm>中有一个__gcd(a, b)函数可以直接调用求取a,b的最大公约数。而a, b的最大公约数gcd和最小公倍数lcm之间有一个关系
$$
ab=gcdlcm
$$
进而可以根据最大公约数得到最小公倍数。

代码

1
2
3
4
5
6
7
8
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
long long int a, b;
cin >> a >> b;
cout << __gcd(a, b) << " " << a/__gcd(a,b)*b << endl;
}