我有找到素數的值的函數。 (http://www.calculatorsoup.com/calculators/math/prime-factors.php)如何優化我的PrimeDivisor函數
例如,它需要12併產生2 * 2 * 3 = 2,3如果將需要10會產生2 * 5 = 2,5-那樣
我的代碼在低於:
public List<Integer> findPrimeDivisor(int value) {
ArrayList<Integer> divisors = new ArrayList<>();
int startPoint = 2;
if (isRound(value, startPoint)) {
divisors.add(startPoint);
}
while (value != 1) {
if (isRound(value, startPoint)) {
value /= startPoint;
continue;
}
startPoint++;
divisors.add(startPoint);
}
return divisors;
}
private boolean isRound(int value, int roundBy) {
return (value % roundBy) == 0 ? true : false;
}
我該如何更有效地做到這一點?感謝您的建議:)
谷歌「java分解」爲許多指針(包括許多在這個網站上)。 – NPE 2014-10-18 14:39:20
如果列舉了所有域的所有數量的所有主要因子(15?),那麼將無法更有效地做到這一點:一旦得到所需的效果,沒有其他算法或實現會更有效。效率 - 每個結果的努力 - 完全是另一回事;只是不要忘記適當地包括用戶和程序員的努力。在有效枚舉自然數的主要因子方面,最大的作用對我來說似乎是數學,其次是算法,然後是編碼 - 每個都有一個Stack Exchange站點。 – greybeard 2014-10-18 15:15:58