计算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
数组

相关文章
相关标签/搜索