Advertisement
hemel18681

prime factorization O(log(N))

Sep 1st, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.81 KB | None | 0 0
  1. #include "bits/stdc++.h"
  2. using namespace std;
  3. #define MAXN 100001
  4.  
  5. int spf[MAXN];
  6. void sieve(){
  7.     spf[1] = 1;
  8.     for (int i=2; i<MAXN; i++)
  9.     spf[i] = i;
  10.     for (int i=4; i<MAXN; i+=2)
  11.     spf[i] = 2;
  12.     for (int i=3; i*i<MAXN; i++){
  13.         if (spf[i] == i){
  14.             for (int j=i*i; j<MAXN; j+=i)
  15.                 if (spf[j]==j)
  16.             spf[j] = i;
  17.         }
  18.     }
  19. }
  20.  
  21. vector<int> getFactorization(int x){
  22.     vector<int> ret;
  23.     while (x != 1){
  24.         ret.push_back(spf[x]);
  25.         x = x / spf[x];
  26.     }
  27.     return ret;
  28. }
  29.  
  30. int main( )
  31. {
  32.     sieve();
  33.     int x;
  34.     cin>>x;
  35.     cout << "prime factorization for " << x << " : ";
  36.     vector <int> p = getFactorization(x);
  37.     for (int i=0; i<p.size(); i++)
  38.         cout << p[i] << " ";
  39.     cout << endl;
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement