题目描述:
分析:
首先做这个题之前我们得清楚最大公约数与最小公倍数的概念
最大公约数:
最大公约数求解方法:
最小公倍数:
最小公倍数求解方法:
由于我们在求最小公倍数的时候可能会造成溢出的情况,所以我们整体使用long long int的数据类型,以此保证空间充足。
如果我们按照以上定义的方式来编写代码,oj平台会提示我们代码运行效率过低,所以我们需要换一个思路来优化我们的代码。
这样来写代码就不会出现时间超限制的情况
源代码:
#include<stdio.h>
int main()
{
long long int n = 0;
long long int m = 0;
//输入
scanf("%d %d", &n, &m);
//计算
long long int n2 = n;
long long int m2 = m;//为了在求最大公约数的时候不改变原来数的值,换一个变量来重新备份一份来求取最大公约数
//1.计算最大公约数
long long int c = 0;
while (c = m2 % n2)
{
m2 = n2;
n2 = c;
}
//2.计算最小公倍数
long long int min = m * n / n2;
//3.求和
long long int sum = min + n2;
//4.打印
printf("%lld\n", sum);
return 0;
}