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;
}
'알고리즘 > 문제 풀이' 카테고리의 다른 글
11659번: 구간 합 구하기 4 (0) | 2022.01.06 |
---|---|
11654번: 아스키 코드 (0) | 2022.01.06 |
11651번: 좌표 정렬하기 2 (0) | 2022.01.06 |
11650번: 좌표 정렬하기 (0) | 2022.01.06 |
11568번: 민균이의 계략 (0) | 2022.01.06 |