알고리즘/문제 풀이
11653번: 소인수분해
Themion
2022. 1. 6. 16:30
https://www.acmicpc.net/problem/11653
11653번: 소인수분해
첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.
www.acmicpc.net
N을 소인수분해 한 뒤 각 인자를 한 줄씩 출력한다
#include <cstdio>
int main() {
// 소인수분해 할 수
int N;
// N의 인수가 둘 이상이라면 N은 가장 작은 인수 i의 제곱보다 크거나 같다
// N이 인수 i로 나누어 떨어질 동안 i를 출력
for (int i = scanf("%d", &N); N >= ++i * i; )
for (; !(N % i); N /= i) printf("%d\n", i);
// for문을 벗어낫다면 N의 인수가 하나 이하가 된다
// N이 1이 아니라면 N은 N의 소수인 인자이므로 출력
if (N != 1) printf("%d\n", N);
return 0;
}