PS/BOJ

BOJ 11653 소인수분해 [Java]

모달조아 2021. 9. 15. 23:55

BOJ 11653 소인수분해

1. 문제 링크

https://www.acmicpc.net/problem/11653

2. 문제 해설

입력 받은 정수를 n, n을 나누는 수를 a라고 하자.
a를 최초의 소수인 2로 초기화 한다.

아래의 과정을 n이 1이 될 때까지 반복한다.
n이 a로 나눠지면 n을 a로 나누고 이 때의 a값을 담는다.
n이 a로 나눠지지않으면 a를 1 늘린다.

3. 코드 보기

import java.io.*;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());
        int a = 2;

        while (n != 1)
        {
            if ((n % a) == 0)
            {
                n /= a;
                sb.append(a + "\n");
            }
            else
                a++;
        }

        bw.write(sb.toString());
        br.close();
        bw.flush();
        bw.close();
    }
}