✏️ 문제풀이/백준
[백준/Java] 11653번 :: 소인수분해
bono-hye
2024. 5. 2. 21:21
| 문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
| 입력
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
| 출력
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
| 예제 입력
72
| 예제 출력
2
2
2
3
3
| 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
for(int i=2; i<=N; i++)
while( N%i == 0)
{
System.out.println(i);
N /= i;
}
}
}
| 정리
문제 풀이 과정은 너무 쉬웠다. 근데 N까지 반복문을 돌리는게 너무 비효율적이라고 생각해서 찾아봤더니
제곱근을 활용해서 풀이를 하신 분들도 많은 것 같다.
그 방법은 어떻게 해서 나오게 된 풀이법인지 공부해봐야겠음!!