#include <stdio.h>
#include <math.h>
long gongyue(long max, long min)
{
long i = 0;
while(1)
{
if ((max % min == 0))
{
return min;
}
long temp = max % min;
max = min;
min = temp;
}
printf("公约数没找到\n");
return 0;
}
int main() {
long a = 0;
long b = 0;
while (scanf("%ld %ld", &a, &b) == 2)
{
long max = (a > b) ? a : b;
long min = (a < b) ? a : b;
long gy = gongyue(max,min);
//最大公倍数 = 两数之积 ÷ 最大公约数
long gb = (a*b)/gy;
printf("%ld\n", gy + gb);
}
return 0;
}
草草了这个题,对效率要求高
知识点,求公约数和公倍数;
提高效率的方法:
公约数 ---用辗转相除法提高速度
公倍数 = 两数之积除以求出来的公约数(a*b)/ 公约数
将数据类型换成long确保最大值够