coding_test/BAEKJOON
백준 11653번 C언어 풀이
CodeJin
2021. 9. 14. 18:36
https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
소인수분해에 관한 문제. 소인수분해를 하려면 일단 소수로 나눠야 해서 에라토스테네스의 체를 쓰려다가, 조금만 생각해보니 일단 2부터 나누고, 안나눠지면 1을 더해서 나눈다. 합성수로 나눠질수도 있다고 생각이 들었었지만, 애초에 2,3,5부터 나눠서 안나눠질때까지 나눠버리기 때문에 합성수가 끼어들 틈이 없다.
#include <stdio.h>
int main () {
int n;
scanf("%d", &n);
int a = 2;
while (n != 1) {
if (n % a == 0) {
printf("%d\n", a);
n /= a;
} else {
a++;
}
}
return 0;
}