728x90
출처-https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net


내 생각
처음에는 소수를 구해야 한다고 생각했다.
그런데 따로 소수를 구해주지 않아도 된다.
2로 나눌 수 있을 때까지 나눠주고, 그다음 3을 나눠주면 4를 나눌 차례가 되었을 때 어차피 2로 나눌 수 있을 때까지 나눠 주었기 때문에 더 이상 나눌 수 없어 5로 넘어가게 된다.
이렇게 2부터 순서대로 나눠주면 따로 소수를 구할 필요 없이 소인수분해를 할 수 있다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
int n = scan.nextInt();
int i = 2;
while(i <= n) {
if (n%i == 0) {
System.out.println(i);
n = n/i;
}
else
i++;
}
}
}728x90
'Problem Solving > BOJ' 카테고리의 다른 글
| [백준, BOJ 2798] 블랙잭 (python) (0) | 2021.05.09 |
|---|---|
| [백준, BOJ 10872] 팩토리얼 (python) (0) | 2021.05.09 |
| [백준, BOJ 10757] 큰 수 A+B (java) (0) | 2021.01.09 |
| [백준, BOJ 4948] 베르트랑 공준 (java) (0) | 2020.09.09 |
| [백준, BOJ 1929] 소수 구하기 (java) (0) | 2020.09.09 |