Я пытаюсь получить простые множители заданного числа с помощью java. Мне удалось написать следующий код. Он возвращает 2,5,10 для простых множителей 100, в то время как 10 не является простым числом, а также возвращает 2, 4,11 для простых делителей 88, если 4 не является простым числом. Может ли кто-нибудь объяснить, в чем причина и как ее исправить?
import java.util.ArrayList;
import java.util.Random;
public class PrimeFactors {
public static void main(String[] args) {
Random randomGenarator = new Random();
int number = randomGenarator.nextInt(150);
System.out.println("Prime factors of :" + number);
findPrimeFactors(number);
}
private static void findPrimeFactors(int i) {
ArrayList<Integer> list = new ArrayList<Integer>();
for (int n = 2; n <= i; n++) {
if (i % n == 0) {
list.add(n);
i /= n;
}
}
for (int n : list) {
System.out.println(n);
}
}
}