/*#include <stdio.h> int main() { long m=0,n=0; scanf("%ld %ld",&m,&n); long x = m*n; //求最大公倍数 (算法复杂度过大,不合题意) long max = (m>n)?m:n;//三目运算符格式 while (max%m!=0 || max%n!=0) { max++; // 逻辑或运算符 ||。这意味着,只要 max 不满足其中一个整除条件,循环就会继续。而逻辑与运算符&&必须都满足整除条件才循环,故不成立。 } printf("%ld",max+x/max); return 0; }*/ #include <stdio.h> int main() { long m = 0, n = 0; scanf("%ld %ld", &m, &n); long x = m * n; //最大公约数*最小公倍数之积等于两积LCM(m, n) = (m * n) / GCD(m, n) // 辗转相除法求最大公约数 while ((m % n) != 0) { int temp = m % n; m = n; n = temp; //好处:代码效率较高 } printf("%ld", n + x / n); return 0; }