본문 바로가기
Coding/Backjoon

[BOJ / java] 11653 : 소수분해

by NeuLyeo 2024. 6. 17.

[BOJ / java] 11653 : 소수분해

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

 

 

 

 

📚 Table of Contents

 

 

 

 

문제

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

 

 

입력

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

 

 

출력

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

 

 

예제

예제 입력 1

72

예제 출력 1

2
2
2
3
3

 

예제 입력 2

3

예제 출력 2

3

 

 

 

 

문제 풀이

코드 설명:

이 코드는 주어진 숫자를 소인수분해하여 모든 소인수를 출력하는 프로그램입니다.

 

 

코드의 동작 방식:

  1. 표준 입력으로부터 정수 n을 입력받습니다.
  2. 2부터 시작하여 n의 제곱근까지 반복하면서 n을 나누는 소인수를 찾습니다.
  3. 소인수로 나눌 때마다 해당 소인수를 출력하고 n을 갱신합니다.
  4. 반복문이 끝난 후 n이 1보다 크면 남은 소인수를 출력합니다.

 

 

코드의 핵심 부분:

  1. 2부터 n의 제곱근까지의 숫자들로 n을 나누며 소인수 분해.
  2. 소인수로 나눌 때마다 결과를 출력하고 n을 갱신.
  3. 반복문 후 남은 n이 1보다 크면 그 값을 출력.

 

 

코드의 흐름:

입력 → 제곱근까지 반복하며 소인수 분해 → 남은 값 출력

 

 

풀이


    
import java.io.*;
public class _06_소인수분해 {
public static void main(String[] args) throws IOException {
// BufferedReader를 사용하여 표준 입력을 받습니다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 정수 n을 입력받아 정수로 변환합니다.
int n = Integer.parseInt(br.readLine());
// 2부터 n의 제곱근까지 반복하면서 소인수를 찾습니다.
for (int i = 2; i * i <= n; i++) {
// n이 i로 나누어 떨어질 때까지 반복합니다.
while (n % i == 0) {
// i를 출력하고 n을 i로 나눕니다.
System.out.println(i);
n /= i;
}
}
// 반복문이 끝난 후 n이 1보다 크면 남은 소인수를 출력합니다.
if (n > 1) {
System.out.println(n);
}
}
}

 

'Coding > Backjoon' 카테고리의 다른 글

[BOJ / java] 2581 : 소수  (1) 2024.06.10
[BOJ / java] 1978 : 소수 찾기  (1) 2024.06.10
[BOJ / java] 9506 : 약수들의 합  (0) 2024.03.21
[BOJ / java] 2501 : 약수 구하기  (0) 2024.03.21
[BOJ / java] 5086 : 배수와 약수  (0) 2024.03.21