Advertisement
Nayeemzaman

PrimeFactorization

Sep 19th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define MAX 1000000
  4. bool v[MAX];
  5. int len, sp[MAX];
  6. vector <int> ans;
  7. void Sieve()
  8. {
  9.     for (int i = 2; i < MAX; i += 2)
  10.         sp[i] = 2;//even numbers have smallest prime factor 2
  11.     for (long long i = 3; i < MAX; i += 2)
  12.     {
  13.         if (!v[i])
  14.         {
  15.             sp[i] = i;
  16.             for (long long j = i; (j*i) < MAX; j += 2)
  17.             {
  18.                 if (!v[j*i])
  19.                     v[j*i] = true, sp[j*i] = i;
  20.             }
  21.         }
  22.     }
  23. }
  24. void factorize(long long k)
  25. {
  26.     int cnt=0;
  27.     while(k>1)
  28.     {
  29.         int sml=sp[k];
  30.         //ans.push_back(sml);
  31.         //printf("%d ",sml);
  32.         while(k%sml==0)
  33.         {
  34.             cnt++;
  35.             k/=sml;
  36.             //printf("%d ",sml);
  37.         }
  38.         ans.push_back(cnt);
  39.         cnt=0;
  40.     }
  41.     //printf("\n");
  42.     //return ans;
  43. }
  44. int main()
  45. {
  46.     Sieve();
  47.     long long num,t=5;
  48.     while(t--){
  49.     ans.clear();
  50.     scanf("%lld",&num);
  51.     factorize(num);
  52.     for(int i=0; i<ans.size();i++)
  53.         printf("%d ",ans[i]);
  54.         cout<<endl;
  55.     }
  56.     //for (int i = 0; i < 50; i++)
  57.         //printf("%d = %d\n",i,sp[i]);
  58.  
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement