GCD and LCM
Time limit 1000 ms
Memory limit 131072 kB
Problem Description
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
解题心得:
- 就是给你两个数,要求输出GCD和LCM。
- 其实就是求个GCD,LCM = a*b/GCD
#include <algorithm>
#include <stdio.h>
#include <cstring>
using namespace std;
typedef long long ll;
ll __gcd(ll a,ll b) {
if(b == 0)
return a;
return __gcd(b,a%b);
}
int main() {
ll a,b;
while(scanf("%lld%lld",&a,&b) != EOF){
ll gcd = __gcd(a, b);
ll lcm = a * b / gcd;
printf("%lld %lld
", gcd, lcm);
}
return 0;
}