백준알고리즘
백준알고리즘:p11653 소인수분해
socialcomputer
2021. 3. 31. 00:26
반응형
분류: 기본수학2
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 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
반응형