Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数

火山日常啰嗦
今天参加腾讯笔试,做编程题时在最小公倍数、最大公约数这些这么简单的知识点上卡壳了,自信心受到强烈的打击,下来后猛复习了这方面的相关编程知识。

有以下几个关键点:
1、任意正整数的最大公约数、最小公倍数都是它本身。
2、求两个数的最大公约数(递归法、相减法、辗转相除法)
3、求两个数的最小公倍数,两个数的最小公倍数与它们的最大公约数之间存在如下关系:
某两个数a,b的最小公倍数=(a*b)/a与b的最大公约数
4、求多个数的最大公约数可以拆解成求两个数的最大公约数的过程
5、求多个数的最小公倍数可以拆解成求两个数的最小公倍数的过程

详细解析都在以下代码中:

public class Main {

//    递归法
    public  static int MaxCommonNum(int left , int right){
        /**
         * 我始终让left>right,这不是硬性要求哈,只是我个人的编程习惯
         */
        if(leftb,则a-=b
     * 2 若aright) left-=right;
        else right-=left;
        return MaxCommonNum1(left,right);
    }

//    辗转相除法
    /**
     * @param left
     * @param right
     * @return
     * 若要用left对right取模,那么要保证left>=right(反之亦然)
     * 1 若left%right==0,则right就是所求的最大公约数
     * 2 若left%right!=0,则将right的值赋给left,将left%riht的值赋给right,即left=right,right=left%right,然后再取模,判断余数是否为0
     * 3 重复这些步骤,直到left%right==0,则right就是所求的最大公约数
     *
     * */
    public static int MaxCommonNum2(int left , int right){
        if(left

有误之处望请指出,望共同进步。感谢!

你可能感兴趣的:(Java求两个数的最大公约数及最小公倍数、求多个数的最大公约数及最小公倍数)