pranay_teja
11/23/2018 - 1:14 PM

PrimeFacrorization-Sieve

#include<bits/stdc++.h>
using namespace std;

vector<int> primeFactorization(int n){
    vector<int> spf(n+1); // smallest prime factor
    for(int i=0;i<=n;i++){
        spf[i]=i; // initializing numbers spf as itself
    }
    for(int i=2; i<=sqrt(n); i++){
        if(spf[i]==i){ // if number is prime
            for(int j=2; i*j <= n; j++){
                if( spf[ i*j ]== i*j){
                    spf[ i*j ] = i; // change if previously not changed
                }
            }
        }
    }
    vector<int> pf;
    while(n>1){
        // cout<<n<<" "<<spf[n]<<endl;
        pf.push_back(spf[n]);
        n/=spf[n];
    }
    return pf;
}

int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int t;
    cin>>t;
    while(t--){
        int n;
        cin>>n;
        vector<int> pf=primeFactorization(n);
        for(auto i : pf){
            cout<<i<<" ";
        }
        cout << endl;
    }
    return 0;
}