wrench786

Prime divisor

Dec 27th, 2020 (edited)
180
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define wrench786 ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
  3. #define ll long long
  4. #define PI (acos(-1.0))
  5. #define LIMIT 1000000000
  6. using namespace std;
  7.  
  8. vector<int>dum(50009,0);
  9. vector<int>prime;
  10. vector<int>divisors;
  11.  
  12. void sieve(){
  13.     int i,j;
  14.     prime.push_back(2);
  15.     for(i=3;i*i<50009;i+=2){
  16.         if(!dum[i]){
  17.             for(j=i*i;j<50009;j+=i){
  18.                 dum[j]=1;
  19.             }
  20.         }
  21.     }
  22.     for(i=3;i<50009;i+=2){
  23.         if(!dum[i]){
  24.             prime.push_back(i);
  25.         }
  26.     }
  27. }
  28.  
  29. ll int pf(ll int n){
  30.     ll int i,divisor=1,co=0,sqt=sqrt(n);
  31.     for(i=0;prime[i]<=sqt;i++){
  32.         if(n%prime[i]==0){
  33.             co=1;
  34.             while(n%prime[i]==0){
  35.                 n/=prime[i];
  36.                 co++;
  37.             }
  38.             divisor*=co;
  39.         }
  40.         sqt=sqrt(n);
  41.     }
  42.     if(n>1){
  43.         divisor*=2;
  44.     }
  45.     return divisor;
  46. }
  47. int main(){
  48.     wrench786
  49.  
  50. #ifndef ONLINE_JUDGE
  51.     clock_t tStart = clock();
  52.     freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
  53. #endif
  54.  
  55.     sieve();
  56.     // int n,a,b;
  57.     // ll int i,x;
  58.     // divisors.push_back(0);
  59.     // divisors.push_back(1);
  60.     // divisors.push_back(2);
  61.     // divisors.push_back(2);
  62.     // for(i=4;i<=10000000;i++){
  63.     //     x = pf(i);
  64.     // }
  65.     // for(i=0;i<1000;i++){
  66.     //     cout<<divisors[i]<<" ";
  67.     // }
  68.     cout<<pf(12)<<endl;
  69.  
  70.  
  71. #ifndef ONLINE_JUDGE
  72.     fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
  73. #endif
  74.  
  75. }
Add Comment
Please, Sign In to add comment