프로그래밍/알고리즘

11653 소인수분해

오답노트의 주인 2022. 8. 19. 19:42

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net


N의 최대 크기가 천만이다.

 

간단하게 생각해서 N을 2부터 나눠본다. 더이상 2로 나눠지지 않으면 3으로 나눠본다. 더이상 3으로 나눠지지 않으면 4로 나눠본다...

 

위의 과정을 반복한다. 

 

#include <iostream>
int main() {
    int number, prime = 2;
    scanf("%d", &number);
    while (number > 1) {
        if (number % prime > 0) {
            prime++;
        }
        else {
            printf("%d\n", prime);
            number /= prime;
        }
    }
}

나눗셈에서 나머지가 있을 때만 분모를 증가시킨다. number가 1 이상일 때만 나눗셈을 할 수 있으므로 조건을 저렇게 설정했다.