最大公约数和最小公倍数
Posted bylight
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最大公约数和最小公倍数相关的知识,希望对你有一定的参考价值。
最大公约数
通常来说,我们使用『辗转相除法』能够快速高效地求出两个数的「最大公约数」,其实就是欧几里得算法,公式如下:
gcd(x, y) = gcd(y, x % y)
gcd(x, 0) = x
代码如下,很简单:
public long gcd(long x, long y)
if (y == 0)
return x;
return gcd(y, x % y);
最小公倍数
定理:a、b 两个数的最小公倍数乘以它们的最大公约数等于 a 和 b 本身的乘积
由上述定理可知,在最大公约数的基础上我们可以轻易得到「最小公倍数」;对于 a、b 两个数,假设它们的最大公约数为 c,那么它们的最小公倍数为a*b/c
,但 a*b 有时候会出现溢出的情况,因此正确的方式应该是先除后乘:a/c*b
。
Java 代码实现:
// 最小公倍数
public long lcm(long x, long y)
return x / gcd(x, y) * y;
public long gcd(long x, long y)
if (y == 0)
return x;
return gcd(y, x % y);
以上是关于最大公约数和最小公倍数的主要内容,如果未能解决你的问题,请参考以下文章