Time limit 1000 ms Memory limit 131072 kB OS Linux
Write a program which computes the greatest common divisor (GCD) and the least common multiple (LCM) of given a and b.
Input
Input consists of several data sets. Each data set contains a and b separated by a single space in a line. The input terminates with EOF.
Constraints
- 0 < a, b ≤ 2,000,000,000
- LCM(a, b) ≤ 2,000,000,000
- The number of data sets ≤ 50
Output
For each data set, print GCD and LCM separated by a single space in a line.
Sample Input
8 6 50000000 30000000
Output for the Sample Input
2 24 10000000 150000000
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
ll gcd(ll a,ll b){
if(b==0)
return a;
return gcd(b,a%b); //递归求最大公约数
}
ll lcm(ll a,ll b){
return a*b/gcd(a,b); //递归求最小公倍数
}
int main(){
ll a,b,m,n;
while(cin>>a>>b){
m=gcd(a,b);
n=lcm(a,b);
cout<<m<<' '<<n<<endl;
}
}