計算1-N 和 多個不連續數字的最小公倍數

    原文:計算1-N 和 多個不連續數字的最小公倍數html

    1-N的最小公倍數java

    /**
     * 1-N的最小公倍數
     * LCM:最小公倍數
     * 說明:循環並依次整除,當所有整除時獲得的值即爲最小公倍數
     */
    @Test
    public void testLCM() {
        int result = 0;
        int countNum = 20;//須要計算的數目:1-20的最小公倍數
        for (int i = 1; i < Integer.MAX_VALUE; i++) {
            int num = countNum;
            while(num > 0) {
                int count = 0;
                for (int j = 1; j <= countNum; j++) {
                    if(i%j!=0){
                        break;
                    }else{
                        count ++;
                    }
                }
                if(count==countNum){
                    result = i;
                    break;
                }
                num --;
            }
            if(result > 0){
                System.out.println("1-"+countNum+"的最小公倍數爲:"+result);
                break;
            }
        }
    }

    多個不連續數字的最小公倍數git

    /**
     * 多個不連續數字的最小公倍數
     */
    @Test
    public void testLCM2(){
        int result = 0;
        int[] arrays = {2,4,6,8,10,12,14,16,18,20};//須要計算的數組
        for (int i = 1; i < Integer.MAX_VALUE; i++) {
            int num = arrays.length;
            while(num > 0) {
                int count = 0;
                for(int array : arrays){
                    if(i%array!=0){
                        break;
                    }else{
                        count ++;
                    }
                }
                if(count==arrays.length){
                    result = i;
                    break;
                }
                num --;
            }
            if(result > 0){
                System.out.println(Arrays.toString(arrays)+"的最小公倍數爲:"+result);
                break;
            }
        }
    }

    總結:沒有考慮算法的時間複雜度、空間複雜度等性能問題,感受也並不算好的解決思路,還有待繼續研究學習。算法

    源碼:http://git.oschina.net/realfighter/xx566-diary/blob/master/src/javase/base/TestLCM.java
數組

相關文章
相關標籤/搜索