题目描述
编写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) == 最小公倍数