본문 바로가기
백준

[백준] 11653번 : 소인수분해 – JAVA [자바]

by Hongwoo 2022. 7. 31.
반응형

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

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 11653번 소인수분해는 브론즈 1 난이도의 수학 문제이다. 이 문제는 되게 간단하다. 숫자 N이 주어졌을 때 이 N을 소인수 분해한 결과를 출력하면 된다. 예를 들어서 6이 주어지면 2와 3을 출력하면 된다.

 

이 문제는 간단한 while-loop을 이용해서 풀 수가 있다. 우선 n을 1이 될때까지 나눠야 하기 때문에 while-loop이 종료되는 기준은 n == 1이라고 설정한다. 따라서, while (n != 1)로 한다.

 

그리고 int i = 2로 초기화해서 선언하고 이 n이 i로 나눠지면 n을 i로 나누고 출력하는 과정을 반복하면 된다. 만약에 n이 i로 나눠지지 않는다면 i는 1씩 증가해주고 loop을 계속해서 하면 된다.

 

자세한 코드는 밑에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringBuilder sb = new StringBuilder();
        int i = 2;
        //n이 1이 될 때까지 반복
        while (n != 1) {
            // i가 n의 약수이면 나누고 출력
            if (n % i == 0) {
                n/= i;
                sb.append(i + "\n");
            } else {
                i++;
            }
        }
        System.out.print(sb);
    }
}

 

 

반응형

댓글