Aizu:0005-GCD and LCM

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


解题心得:

  1. 就是给你两个数,要求输出GCD和LCM。
  2. 其实就是求个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;
}
原文地址:https://www.cnblogs.com/GoldenFingers/p/9107136.html