알고리즘/문제 풀이

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;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

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