Advertisement
sivan_iut

Untitled

May 28th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.11 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. vector<bool> flag(1000000, true);
  5. vector<long long > primes;
  6.  
  7. void sieve()
  8. {
  9.     flag[0] = false;
  10.     flag[1] = false;
  11.  
  12.     for(long long  i = 2; i*i < 1000000; i++)
  13.         if(flag[i])
  14.             for(long long  j = 2; i*j < 1000000; j++)
  15.                 flag[i*j] = false;
  16.  
  17.  
  18.  
  19.     primes.push_back(2);
  20.     for(long long i = 3; i < 1000000; i += 2)
  21.         if(flag[i])
  22.             primes.push_back(i);
  23.  
  24. }
  25.  
  26. long long countDivisor(long long n)
  27. {
  28.     long long divisor = 1;
  29.     long long p=primes.size();
  30.     for (long long i = 0; i <p ; i++)
  31.     {
  32.         if (n % primes[i] == 0)
  33.         {
  34.             long long cnt = 1;
  35.             while (n % primes[i] == 0)
  36.             {
  37.                 n /= primes[i];
  38.                 cnt++;
  39.             }
  40.             divisor *= cnt;
  41.         }
  42.     }
  43.     return divisor;
  44. }
  45.  
  46. int main()
  47. {
  48.     sieve();
  49.     long long t;
  50.     cin>>t;
  51.     long long i=1;
  52.     while(t--)
  53.     {
  54.         long long n;
  55.         cin>>n;
  56.         cout<<"Case "<<i<<": "<<countDivisor(n)-1<<endl;
  57.         i++;
  58.     }
  59.  
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement