最小公倍数
| Time Limit: 1000MS | Memory Limit: 65536K | |
| Total Submissions: 1680 | Accepted: 413 |
Description
最小公倍数(Least Common Multiple,缩写L.C.M.),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数a,b来说,指该两数共有倍数中最小的一个,记为lcm(a,b)。
Input
每行两个正整数a,b
Output
lcm(a,b),独立一行
Sample Input
5 6 1 19
Sample Output
30 19
这道题没写输入范围,但是用int会发生溢出,而且要用辗转相除法减少时间复杂度,不然容易超时,公倍数也要用:最小公倍数=两数的乘积/最大公约(因)数
#include <stdio.h>
int g1(long long a,long long b) //最大公因数
{
long t;
if(a<b){t=a;a=b;b=t;}
while(b>0)
{
a=a%b;
t=a;a=b;b=t;
}
return a;
}
int g2(long long a,long long b) //最小公倍数
{
long long i;
i=a/g1(a,b)*b;
return i;
}
int main()
{
long long a,b;
while(scanf("%lld%lld",&a,&b)!=EOF)
{
printf("%lld\n",g2(a,b));
}
return 0;
}
这篇博客介绍了一种使用C++编程语言通过辗转相除法计算两个正整数最小公倍数的方法。代码中包含两个函数,分别用于计算最大公约数和最小公倍数,并在主函数中读取用户输入并输出结果。该算法优化了时间复杂度,避免了溢出问题,适用于解决超时问题。
1569

被折叠的 条评论
为什么被折叠?



