11653 소인수분해
BaekJoon URL : https://www.acmicpc.net/problem/11653
이 문제의 해결 중점은 정수 N 의 최소공약수를 계속적으로 나누어 1이 될 때 까지의 값들이다.
while ( True )
For문 ( 2 ~ N )
현재 값의 최소 공약수로 나누고 break
If문 ( N == 1 )
종료
1. N == 1 일 때, 아무것도 출력하지 않는다.
if (N==1) { System.exit(0); }
2. 2~A 까지의 수 중에서 최소 공약수를 찾아내어 나누는 For문을 생성한다.
for (int j = 2; j <= N; j++) {
if (N%j == 0) {
N /= j;
break;
}
}
3. 최소 공약수를 계속적으로 나누어 N값이 1이 될 때 까지 나누어 준다.
while (true) {
for (int j = 2; j <= N; j++) {
if (N%j == 0) {
N /= j;
break;
}
}
}
4. 각 최대 공약수를 출력하고 N이 1의 값이 되어 최소 공약수가 더이상 없을 때 까지 진행한다.
while (true) {
for (int j = 2; j <= N; j++) {
if (N%j == 0) {
N /= j;
System.out.println(j);
break;
}
}
if (N == 1) {
break;
}
}
답안
public static void main(String[] args) throws NumberFormatException, IOException {
int N = Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
if (N==1) { System.exit(0); }
while (true) {
for (int j = 2; j <= N; j++) {
if (N%j == 0) {
N /= j;
System.out.println(j);
break;
}
}
if (N == 1) {
break;
}
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
10757 큰 수 A+B (0) | 2022.07.25 |
---|