[백준] 11653번 소인수분해 (JAVA)

sarah·2023년 1월 24일
0

BaekJoon

목록 보기
8/11

해결

  • 소인수분해는 소수인 인수로 분해하는 것을 말하며, 그렇기에 출력되는 소수의 범위는 입력값의 제곱근 이하로 볼 수 있다. ⇒ Math.sqrt() 이용하기

코드

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int num = Integer.parseInt(br.readLine());
        
		// 입력값이 경우, 출력x
        if( num == 1 ) return;
        
        StringBuilder sb = new StringBuilder();
		// 검증할 소수의 범위는 제곱근 이하
        for(int i=2; i<=Math.sqrt(num); i++) {
            while(num % i == 0) {
                sb.append(i + "\n");
                num /= i;
            }
        }

		// 나머지가 1이 아닌 경우, 본인이 소수
        if( num != 1) {
            sb.append(num);
        } else {
			System.out.print(sb);
		}
    }
}

0개의 댓글