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 |