首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >计算两个整数的最小公倍数的最有效方法是什么?

计算两个整数的最小公倍数的最有效方法是什么?
EN

Stack Overflow用户
提问于 2010-07-01 08:52:21
回答 14查看 83K关注 0票数 75

计算两个整数的最小公倍数的最有效方法是什么?

我刚刚想出了这个,但它确实留下了一些令人期待的东西。

int n=7, m=4, n1=n, m1=m;

while( m1 != n1 ){
    if( m1 > n1 )
        n1 += n;
    else 
        m1 += m;
}

System.out.println( "lcm is " + m1 );
EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2010-07-01 09:07:01

ab的最小公倍数是它们的乘积除以它们的最大公约数(即lcm(a, b) = ab/gcd(a,b))。

因此,问题变成了,如何找到gcd?Euclidean algorithm通常是计算gcd的方式。经典算法的直接实现是有效的,但是有一些变体利用二进制算法来做得更好一些。请参阅Knuth的"The Art of Computer ProgrammingVolume 2, "Seminumerical Algorithms" § 4.5.2

票数 148
EN

Stack Overflow用户

发布于 2010-07-01 09:09:47

我认为"reduction by the greatest common divider“的方法应该更快。首先计算GCD (例如使用Euclid's algorithm),然后将两个数字的乘积除以GCD。

票数 3
EN

Stack Overflow用户

发布于 2015-11-25 02:55:02

首先,你必须找到最大的公约数

for(int i=1; i<=a && i<=b; i++) {

   if (i % a == 0 && i % b == 0)
   {
       gcd = i;
   }

}

在此之后,使用GCD,您可以很容易地找到最小公倍数,如下所示

lcm = a / gcd * b;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3154454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档