У меня есть функция, которая находит значения простых делителей. (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;
}
Как я могу сделать это более эффективно? Спасибо за ваши предложения :)
Google «java factorization» для множества указателей (в том числе многих на этом сайте). – NPE
Если бы это перечисляло все простые делители всех чисел его области (15?), Не было бы способа сделать это более эффективно: как только вы получите желаемый эффект, ни один другой алгоритм или реализация не будут более эффективными. Эффективность - усилие на результат - совсем другое дело; просто не забудьте включить усилия пользователя и программиста соответствующим образом. Самые большие роли в эффективном перечислении простых делителей натурального числа казались бы математикой для меня, за которой следует алгоритм, а затем кодирование - для каждого сайта есть сайты Stack Exchange. – greybeard