algorithm

[C++] 백준 알고리즘 11653번 (소인수분해)

Dev:P 2019. 1. 20. 12:01
반응형

문제

 

 


이번에 다뤄볼 문제는 11653번 문제 '소인수분해'입니다.

소인수분해 문제에서는 크게 설명드릴만한 내용이 딱히 없습니다.

 

N을 소인수분해 했을때 나타날 수 있는 인수중 가장 큰 값은 루트N입니다.

따라서, 2부터 루트N까지 for문을 돌면서 N을 나눌 수 있다면 계속 나눠주면 됩니다.

 

아래 해답 코드를 보면 더 쉽게 이해할 수 있으실 겁니다.


 

코드(C++)

#include<iostream>
using namespace std;
int main() {
 
    int n;
 
    cin >> n;
 
    for (int i = 2; i*i <= n; i++) {
        while (n%i == 0) {
            cout << i << endl;
            n /= i;
        }
    }
    if (n > 1) {
        cout << n << endl;
    }
    return 0;
}
 

 

반응형