题目描述
输入两个正整数m和n(1<m, n<1000000000),求其最大公约数和最小公倍数。
输入
有多行,每行2个正整数m和n。
输出
m和n的最大公约数、最小公倍数。
样例输入 Copy
16 24
5 7
样例输出 Copy
8 48
1 35
提示
要求:编写求最大公约数和最小公倍数的函数。
# include <stdlib.h>
# include <stdio.h>
//最大公约数
int gcd(long a, long b)
{
int i;
int temp;
if (a > b)
{
temp = a;
a = b;
b = temp;
}
for (i = a; i > 0; i--)
{
if (a % i == 0 && b % i == 0)
{
break;
}
}
return i;
}
//最小公倍数
int lcm(long a, long b)
{
int x;
x = gcd(a, b);
return a * b / x;
}
int main()
{
long a, b;
int x=0, y=0;
while (scanf("%d%d", &a, &b) != EOF)
{
x = gcd(a, b);
y = lcm(a, b);
printf("%d %d\n", x, y);
}
return 0;
}