백준/JAVA

[백준/JAVA] 11653번 소인수분해

누룽지맛치킨 2023. 1. 20. 09:34
  • N을 소인수분해하는 문제

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

1. 문제

정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.

2. 문제 접근

1) 정수 N을 입력받는다.
2) StringBuilder에 가장 작은 소수부터 시작하여 소인수들을 append한다.

  • 소수가 아닌 것들은 그것보다 작은 소수에 의해서 이미 나누어지기 때문에 자동적으로 반복문에서 통과된다.

3. 코드

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;

public class Main {
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());
        if(num==1) {
            return;
        }

        StringBuilder sb = new StringBuilder();
        for(int i=2;i<=num;i++) {
            if(num%i==0) {
                sb.append(i).append("\n");
                num/=i;
                i--;
            }
            if(num==1)
                break;
        }
        System.out.print(sb);
    }
}