본문 바로가기
알고리즘/백준

백준 11653번 소인수분해 [C++]

by seongjun 2023. 11. 27.

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

 

11653번: 소인수분해

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

www.acmicpc.net

 

입력받은 숫자를 소인수분해하여 오름차순으로 출력하는 문제이다.

 

#include <iostream>
#include <string>

using namespace std;

int main(){
    int n;
    cin >> n;
    int prime = 2;
    while (n > 1){
        if(n % prime == 0){
            cout << prime << endl;
            n /= prime;
        } else{
            prime++;
        }
    }
}

가장 작은 소수인 2부터 시작해서 계속 나누면 된다.

더 이상 해당 숫자로 나누어지지 않을 때 까지 나누므로, 소수가 아닌 숫자로 나눌 경우는 없다.