题目描述
输入两个正整数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; }