코린이의 소소한 공부노트

[백준 온라인 저지] 11653. 소인수분해 본문

코딩테스트 풀이/JAVA

[백준 온라인 저지] 11653. 소인수분해

무지맘 2023. 5. 16. 11:55

1. 입력

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

 

2. 출력

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

 

3. 예제

 

4. 코드

import java.util.*;
import java.io.*;
class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.valueOf(br.readLine()), i = 0;
        ArrayList<Integer> list = prime(n);
        while(i<list.size() && n>1){
           while(n%list.get(i)==0){
               bw.write(list.get(i)+"\n");
               n /= list.get(i);
           }
           i++;
        }
        if(n>1)
            bw.write(n+"\n");
        bw.flush();
        bw.close();
	}
	
    static ArrayList<Integer> prime(int n){
        ArrayList<Integer> ans = new ArrayList<>();
        for(int i=2 ; i<=Math.sqrt(n) ; i++){
            boolean check = true;
            for(int j=2 ; j<=Math.sqrt(i) && check; j++)
                if(i%j==0)
                    check = false;
            if(check)
                ans.add(i);
        }
        return ans;
    }
}