정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
2부터input보다 작을 때 까지 하나씩 증가시켜 만약 해당 수를 input에다 나눴을 때 0이 된다면, 그 수는 input의 약수이다. 해당 수를 출력하고, input에다 그 수를 나눈다. input이 1이 될때까지 반복한다.
만약 계속 증가시켰는데, input과 같다면 그 수는 더 이상 다른 숫자로 나누어 떨어지지 않으므로 출력을 하고 반복문을 종료한다.
import java.util.*;
import java.io.*;
public class Main{
public static void main(String [] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
int input = Integer.parseInt(br.readLine());
int i=2;
if(input!=1) {
while(input!=1) {
while(i<input) {
if(input%i==0) {
sb.append(i);
sb.append("\n");
input /= i;
i = 2;
continue;
}
i++;
}
if(i==input) {
sb.append(i);
break;
}
}
}
sb.append("\n");
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}