이 문제는 2 부터 n까지 n으로 나누었을때 0으로 나누어 떨어지는 수를 구하면 된다. 그리고 이 수가 소수인지를 판별하는 판별식으로 소수가 맞는지를 판별해야 한다. 소수 판별식은 2에서 Math.sqrt(i) 까지 나누었을때 나누어 떨어지는 수가 있으면 소수인 것으로 판별해주었다
private ArrayList<Integer> solution(int n) {
ArrayList<Integer> arr = new ArrayList<>();
for (int i = 2; i <= n; i++) {
if (n % i == 0 && isPrime(i)) {
arr.add(i);
n /= i;
}
}
return arr;
}
private boolean isPrime(int k) {
for (int i = 2; i < Math.sqrt(k); i++) {
if (k % i === 0) {
return false;
}
}
return true;
}
수학 문제 나오면 항상 당황하기 때문에 잘 정리해둬야겠다