链接:http://pre.ac.nowcoder.com/acm/contest/1869/O
来源:牛客网

题目描述

小乐乐最近在课上学习了如何求两个正整数的最大公约数与最小公倍数,但是他竟然不会求两个正整数的最大公约数与最小公倍数之和,请你帮助他解决这个问题。
输入描述:

每组输入包含两个正整数n和m。(1 ≤ n ≤ 109,1 ≤ m ≤ 109)

输出描述:

对于每组输入,输出一个正整数,为n和m的最大公约数与最小公倍数之和。

#include<iostream>
using namespace std;
int  main()
{
    unsigned long long int a, b, gcd, lcm;        //gcd为最大公约数(greatest common divisor),lcm为最小公倍数(least common multiple)
    cin >> a >> b;
    unsigned long long int a1 = a, b1 = b, temp = 1;
    while (temp)
    {
        temp = a1 % b1;
        a1 = b1;
        b1 = temp;
    }
    gcd = a1;
    lcm = a * b / gcd;
    cout << gcd + lcm << endl;
}