공log/[P&B]

[P&B] #70 BAEKJOON 11653

ming_OoO 2023. 9. 19. 12:07
728x90

백준 11653번 소인수분해

문제 설명

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

 

입력

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

 

출력

N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.

 

나의 문제 풀이 코드

import java.util.Scanner;

public class bj11653 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int N = in.nextInt();

        for (int i = 2; i <= Math.sqrt(N); i++) {	// 또는 i * i <= N
            while (N % i == 0) {
                System.out.println(i);
                N /= i;
            }
        }
        if (N != 1) {
            System.out.println(N);
        }
    }
}

 

문제 풀이 코멘트

for 루프를 사용하여 i를 2부터 N의 제곱근까지 증가시킵니다. 이렇게 하면 가능한 가장 작은 소인수부터 시작합니다.

  • i가 N의 소인수인 경우, while 루프를 사용하여 N을 i로 나누고 i를 출력합니다. 그런 다음 N을 i로 나눈 나머지가 0이 아닐 때까지 이 작업을 반복합니다. 이 과정은 N을 i의 배수로 나눌 수 없을 때까지 진행됩니다.

마지막으로, 만약 N이 1이 아니라면, 남은 N을 출력합니다. 이것은 N이 소수인 경우입니다.

728x90

'공log > [P&B]' 카테고리의 다른 글

[P&B] #72 BAEKJOON 11050  (0) 2023.09.20
[P&B] #71 BAEKJOON 15829  (0) 2023.09.20
[P&B] #69 BAEKJOON 1193  (0) 2023.09.18
[P&B] #68 BAEKJOON 2292  (0) 2023.09.18
[P&B] #67 BAEKJOON 2903  (0) 2023.09.18