어떤 자연수를 소수의 곱으로 나타내는 것을 소인수분해라고 한다. 예를 들어, 12를 소인수분해하면 2 x 2 x 3으로 나타낼 수 있, 이때 2와 3은 소수이다.
*작은 소수에서 n%i == 0이 성립하지 못한다면 그보다 큰 합성수는 n%i == 0이 성립하지 못하므로 작은 수부터 시작했을 때 나누어 떨어지는 수가 소수라는 점을 이용한다.
while (N > 1) {
for (int i = 2;;) {
if (N == 1) return;
if (N % i == 0) {
System.out.println(i);
N /= i;
} else {
i++;
}
}
}