美文网首页基础编程50题
【题目06】最大公约数和最小公倍数

【题目06】最大公约数和最小公倍数

作者: Xplorist | 来源:发表于2017-03-25 15:18 被阅读24次

    【程序6】
    题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

    package com.share.test01_10;
    
    /**
     * 【程序6】题目:<br>
     * 输入两个正整数m和n,求其最大公约数和最小公倍数。  
     * 
     * @author brx
     */
    public class Test06 {
        public static void main(String[] args) {
            test(148, 20);
        }
    
        /**
         * 思路:<br>
         * 先比较两个数的大小,用小的数找最大公约数,用大的数找最小公倍数<br>
         * 思路1:找最小公倍数通过递增判断去找<br>
         * 思路2: 找最小公倍数通过最大公约数去找
         * 
         * @param max
         *            两个数中的大的数
         * @param min
         *            两个数中的小的数
         * @param lcm
         *            最小公倍数(Least Common Multiple)
         * @param gcd
         *            最大公约数(Greatest Common Divisor)
         */
        public static void test(int m, int n) {
            int max = 0;
            int min = 0;
            max = m > n ? m : n;
            min = m < n ? m : n;
        
            int gcd = min;
            for (int i = min; i > 1; i--) {
                if (max % i == 0 && min % i == 0) {
                    System.out.println("最大公约数:" + i);
                    gcd = i;
                    break;
                }
            }
    
            int lcm = max;
            while (true) {
                if (lcm % max == 0 && lcm % min == 0) {
                    System.out.println("最小公倍数:" + lcm);
                    break;
                }
                lcm++;
            }
    
            lcm = max * min / gcd;
            System.out.println("最大公倍数:" + lcm);
        }
    }
    
    

    相关文章

      网友评论

        本文标题:【题目06】最大公约数和最小公倍数

        本文链接:https://www.haomeiwen.com/subject/osscottx.html