1684838553 / arithmeticQuestions

程序员的算法趣题
2 stars 0 forks source link

怎样找最小公倍数和最大公约数 #19

Open 1684838553 opened 2 years ago

1684838553 commented 2 years ago

最小公倍数的求法:

求几个自然数的最小公倍数,有两种方法: (1)分解质因数法。先把这几个数分解质因数,再把它们一切公有的质因数和其中几个数公有的质因数以及每个数的独有的质因数全部连乘起来,所得的积就是它们的最小公倍数。 例如,求[12,18,20],因为12=2^2×3,18=2×3^2,20=2^2×5,其中三个数的公有的质因数为2,两个数的公有质因数为2与3,每个数独有的质因数为5与3,所以,[12,18,20]=2^2×3^2×5=180。(可用短除法计算)

(2)公式法。由于两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。 例如,求[18,20],即得[18,20]=18×20÷(18,20)=18×20÷2=180。求几个自然数的最小公倍数,可以先求出其中两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数,依次求下去,直到最后一个为止。最后所得的那个最小公倍数,就是所求的几个数的最小公倍数。

最大公约数 指某几个整数共有因子中最大的一个。

例如,12和30的公约数有:1、2、3、6,其中6就是12和30的最大公约数。

两个整数的最大公约数主要有两种寻找方法:

和最小公倍数(lcm)的关系:gcd(a, b)×lcm(a, b) = ab

两个整数的最大公因子可用于计算两数的最小公倍数,或分数化简成最简分数。

1684838553 commented 2 years ago
// 用辗转相除法求最大公约数
function gcd1( a ,  b ) {
    // write code here
    while(a * b){
        if(a<b){
            b %= a
        }else if(a>b){
            a %= b
        } 
    }
    return  a>b ? a:b
}
1684838553 commented 2 years ago
// 最小公倍数
最小公倍数 = a * b / a和b的最大公约数gcd1(a,b)