原文:計算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
數組