下面的程序用欧几里得算法(辗转相除法)求两个正整数 a、b 的最大公约数 g 和最小公倍数 l。欧几里得算法的依据是 gcd(x, y) = gcd(y, x mod y),迭代到余数为 0 时,当前被除数即为最大公约数;最小公倍数由 a / g * b 得到。试补全程序。
#include <cstdio>
int main() {
long long a, b;
scanf("%lld%lld", &a, &b);
long long x = a, y = b;
while (___①___) {
long long r = ___②___;
___③___
y = r;
}
long long g = ___④___;
printf("%lld %lld\n", ___⑤___, a / g * b);
return 0;
}