본문 바로가기
공부 정리/백준

[백준] 자바 11653 소인수분해

by 경적필패. 2021. 9. 15.
반응형

문제

정수 N이 주어졌을 때, 소인수 분해하는 프로그램을 작성하시오.

입력

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

출력

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


테스트 케이스

 

입력 1

1000000

출력 1

2
2
2
2
2
2
5
5
5
5
5
5

 

입력 2

7

출력 2

7

 

입력 3

5000

출력 3

2
2
2
5
5
5
5


접근

1.수를 입력받습니다.

2. 순서대로 소인수 분해한 결과를 출력해줍니다.

 

하나의 증가하는 변수를 지정하여 반복문을 돌면서 지정한 변수로 나눠 떨어지는지 검사하면서 입력받은 값이 1이 될 때까지 반복합니다.


코드

import java.awt.desktop.SystemEventListener;
import java.io.*;
import java.math.*;
import java.util.*;

public class Main {

	/*
 	 11653 problem
	*/
	public static void main(String[] args) throws NumberFormatException, IOException {
		// TODO Auto-generated method stub
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		int num = Integer.parseInt(br.readLine());
		int a = 2;
		while(num !=1) {
			if(num %a == 0) {
				num /= a;
				bw.write(a+"\n");
				a=2;
			}
			else {
				a++;
			}
		}
		
		bw.flush();
		br.close();
		bw.close();
	}
}

주의

 

 

반응형

댓글