본문 바로가기
백준알고리즘

백준알고리즘:p11653 소인수분해

by socialcomputer 2021. 3. 31.
반응형

분류: 기본수학2

 

문제

N이 1인 경우 아무것도 출력하지 않는다

 

코드

//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨 
package math_2;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class p11653 {
//소인수분해
	public static void main(String[] args) {
		try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
		int x = Integer.parseInt(br.readLine());
			for(int i=2; i<=Math.sqrt(x); i++) {
					while(x%i==0) { 
						x=x/i; 
						bw.write(String.valueOf(i)+"\n"); 
						}
			}
		//아래 코드 한줄을 추가한 이유는 입력받은 숫자 자체가 소수일 경우를 대비한 것이다. 
		if(x!=1) bw.write(String.valueOf(x)+"\n");
			bw.flush();
		}catch(Exception e){e.printStackTrace();}
		}
}

▶소수를 구하는 방법을 안다면 쉽게 풀 수 있는 문제다. 

한가지 주의해야 될 점은 입력받은 수 자체가 소수일 땐, 

(x의 근삿값까지만 소인수분해 여부를 확인함으로)

즉, x가 위 코드들을 다 돌고 나서도 x가 1이 아닐 때

x를 출력해준다.

 

 

▶BufferedReader 와 BufferedWriter를 사용했다.


채점결과

링크 www.acmicpc.net/problem/11653

 

11653번: 소인수분해

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

www.acmicpc.net

 

반응형

댓글