알고리즘/알고리즘 문제 풀이

(C++) 백준 11653번 - 소인수분해

용꿀 2023. 5. 15. 02:15

문제 링크 : https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

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

www.acmicpc.net

문제 풀이

소인수분해는 가장 작은 소수인 2부터 시작하여 합성수가 나눠지지 않을 때까지 계속해서 나눠주면 된다.

#include <iostream>

using namespace std;

int n;

int main() {
    ios::sync_with_stdio(0);  
    cin.tie(0);
    cout.tie(0);

    cin >> n;
    for(int i = 2; i*i <= n; i++){
        while(n % i == 0){
            cout << i << "\n";
            n /= i;
        }
    }
    if(n != 1) cout << n;
}