알고리즘

[백준] 11653번: 소인수분해 / Java(자바)

원혜강 2021. 7. 22. 12:26

[ 문제 ]

 

 


 

소인수분해는 1보다 큰 자연수를 소인수(소수인 인수)들만의 곱으로 나타내는 것 또는 합성수를 소수의 곱으로 나타내는 방법을 말한다. 

 

 [ 접근 ]

  1.  앞의 문제들이 소수를 찾는 문제라서 소수를 전부 구해서 N을 최소값부터 나눠야 하나 고민했지만 제일 작은 소수인 2부터 N까지 나누어 지지 않을 때까지 나누면 되겠다고 생각!
  2. 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은 나눈 수로 초기화 해주기
			}
		}
		
			
		
		
    }    
}