Факторизация - это разложение числа на произведение простых чисел.
Например: число 100 разлагается на 2 * 2 * 5 * 5.
Ниже приведена реализация на Java с алгоритмической сложностью sqrt(N).
Мы перебираем делители он 2 до квадратного корня из факторизируемого числа, и делим число на делитель, пока это возможно.
В конце остается либо 1, либо простое число, которое добавляется в результат.
List<Integer> factorization(int num) { List<Integer> factors = new ArrayList<>(); for (int i = 2; i <= Math.sqrt(num); i++) { while(num % i == 0) { num /= i; factors.add(i); } } if(num != 1) { factors.add(num); } return factors; }
Добавить комментарий