黑马程序员技术交流社区

标题: 技术铁 [打印本页]

作者: scriptlulu~    时间: 2019-6-27 08:16
标题: 技术铁
对最小公倍数
上课时讲解的解法如下。
思路: 找出两个数的较大数,从他开始遍历值[max, max*min],运算的步进值为1;最大的循环数 (max*min-max+1)
我的修改: 如果修改步进值为max,则可以大大减少循环次数,最大循环次数为 min
修改如下:
public static int getMinCommonBeishu(int num1, int num2){
        int max = num1 > num2 ? num1 : num2;
        int min = num1 + num2 - max;
        for(int i=1;i<= min;i++){
            if( i*max % min == 0){
                return  i*max;
            }
        }
        return -1;
    }


课上Demo:
public class Demo05 {
    public static void main(String[] args) {
        //求两个数据的最小公倍数   15  25    75
        //返回值: 参数

        int num = getMinGongbei(151, 250);

        System.out.println(num);

    }

    /**
     * 获取两个数据的最小公倍数   15  25  71 88
     *
     * @param a 参数1
     * @param b 参数2
     * @return 返回最小公倍数
     */
    public static int getMinGongbei(int a, int b) {

        int max = a > b ? a : b;
        int min = a < b ? a : b;
        //通过遍历

        for (int i = max; i <= max * min; i++) {

            if (i % max == 0 && i % min == 0) {
                return i;
            }

        }

        return -1;
    }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2