백준 11653 소인수분해 문제풀이 (JAVA)

0

문제 링크

문제


정수 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();
        
    }

    
}

0개의 댓글