#include <stdio.h> int main(void) { long num1, num2;//输入数 scanf("%ld %ld", &num1, &num2); //求最大公约数 long greatest_common_divisor = 0; int divisor_1, dividend_1; if (num1 >= num2)//确定除数、被除数 divisor_1 = num1, dividend_1 = num2; else divisor_1 = num2, dividend_1 = num1; while((divisor_1 % dividend_1) != 0)//欧几里得求最大公约数 { int middle = divisor_1; divisor_1 = dividend_1; dividend_1 = middle % divisor_1; } greatest_common_divisor = dividend_1; //求最小公倍数 long least_common_multiple = 0; long divisor_2, dividend_2; if (num1 >= num2) divisor_2 = num1, dividend_2 = num2; else divisor_2 = num2, dividend_2 = num1; int middle = divisor_2;//方便递加的中间数 while(1)//被除数成倍数增长,直到除尽除数 { if((divisor_2 % dividend_2 == 0)) break; divisor_2 += middle; } least_common_multiple = divisor_2; printf("%ld", greatest_common_divisor + least_common_multiple); return 0; }