某比赛题,一看很简单就来发福利了

题目描述
编写2个函数,函数的功能分别是:

big(a,b)big(a,b):求出a和b的最大公因数。

small(a,b)small(a,b):求出a和b的最小公倍数。

输入格式
2个在 int 范围内的整数。

输出格式
输出他们的最大公因数和最小公倍数,中间以空格隔开。

输入输出样例
输入 #1
15 25
输出 #1
5 75
说明/提示
对于 10%10% 的数据,a=1,b=1a=1,b=1。

对于 50%50% 的数据,a<10,b<10a<10,b<10。

对于 100%100% 的数据,无特殊限制。


#include <iostream>
using namespace std;

long long big(long long a, long long b)
{
    if (a <= b)
    {
        long long temp = a;
        a = b;
        b = temp;
    }
    long long R0 = a;
    long long R1 = b;
    long long R2 = a % b;
    while (R2 != 0)
    {
        R0 = R1;
        R1 = R2;
        R2 = R0 % R1;
    }
    return R1;
}

long long small(long long a, long long b)
{
    return a * b / big(a, b);
}

int main()
{
    int a, b;
    cin >> a >> b;
    cout << big(a, b) << ' ' << small(a, b);
    return 0;
}

求最大公约数
int gcd(int a,int b)
{
return b ? gcd(b,a % b) : a;
}

求最小公倍数
a * b / gcd(int a,int b) == 最小公倍数