알고리즘
[백준] 11653번: 소인수분해 / Java(자바)
원혜강
2021. 7. 22. 12:26
[ 문제 ]
소인수분해는 1보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 또는 합성수를 소수의 곱으로 나타내는 방법을 말한다.
[ 접근 ]
- 앞의 문제들이 소수를 찾는 문제라서 소수를 전부 구해서 N을 최소값부터 나눠야 하나 고민했지만 제일 작은 소수인 2부터 N까지 나누어 지지 않을 때까지 나누면 되겠다고 생각!
- N을 2부터 시작해서 나머지가 0이 될 때까지 한 숫자로 나누기 → N을 N/i로 초기화 해줘야함!
[ 풀이 ]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bf.readLine());
for(int i=2; i<=N; i++) {
while(N%i==0) { //N이 i로 나누어 지지 않을 때까지
System.out.println(i);
N=N/i; //N은 나눈 수로 초기화 해주기
}
}
}
}