백준 11653 소인수 분해 (JAVA 자바 풀이)
📌 문제
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
⚔ 입력
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
📣 출력
N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.
💎 문제 분석
N의 최대값이 10,000,000에 시간제한은 1초이므로 반복문을 사용하면 100% 시간 초과가 날 것이고
일일히 구하는 것이 아니라 숫자를 줄여나가면서 구하면서 출력하는 방식으로 풀어야 한다.
💡 코드 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
int number = Integer.parseInt(stringTokenizer.nextToken());
printOutPrimeFactors(number);
}
private static void printOutPrimeFactors(int number) {
int primeFactor = 2;
while( number !=1) {
if (number %primeFactor ==0){
System.out.println(primeFactor);
number = number / primeFactor;
continue;
}
primeFactor++;
}
}
}
반응형
'알고리즘 > 백준' 카테고리의 다른 글
백준 9020 골드바흐의 추측 (JAVA 자바 풀이) (0) | 2022.12.02 |
---|---|
백준 4948 베르트랑 공준 (JAVA 자바 풀이) (0) | 2022.12.01 |
[백준/자바] 1978 소수 찾기 (0) | 2022.12.01 |
[백준/자바] 10250 ACM 호텔 (0) | 2022.12.01 |
[백준/파이썬] 2869 달팽이는 올라가고 싶다 (0) | 2022.12.01 |