소인수 분해

정수 N을 소수의 곱으로 분해. 소수를 안구해도 됨. N을 소인수 분해 했을 때 인수 중에서 가장 큰 값은 루트N이다.

따라서 2~루트N까지 for문을 돌면서, N을 나눌 수 있을 때까지 계속 나누면된다.

    int N;
    cin>>N;

    int divider = 2;

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

Last updated

Was this helpful?