sajid161

Class - 31 : Task - 2

Jan 27th, 2025
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long int ll;
  4. const int mx=1e8+123;
  5. bitset<mx> is_prime;
  6. vector<ll>v;
  7. void prime_gen(ll n)
  8. {
  9.     is_prime[2]=1;
  10.     for(ll i=3;i<=n;i+=2)
  11.     {
  12.          is_prime[i]=1;
  13.     }
  14.     for(ll i=3;i*i<=n;i+=2)
  15.     {
  16.         if(is_prime[i]==1)
  17.         {
  18.             for(ll j=i*i;j<=n;j+=2*i)
  19.             {
  20.                 is_prime[j]=0;
  21.             }
  22.         }
  23.     }
  24.     v.push_back(2);
  25.     for(int i=3;i<=n;i+=2)
  26.     {
  27.         if(is_prime[i]==1) v.push_back(i);
  28.     }
  29. }
  30. ll SOD(ll n)
  31. {
  32.     ll ans=1;
  33.     for(auto u:v)
  34.     {
  35.         if(1ll*u*u>n) break;
  36.         if(n%u==0)
  37.         {
  38.             ll p=1;
  39.             while(n%u==0)
  40.             {
  41.                 p*=u;
  42.                 n/=u;
  43.             }
  44.             p*=u;
  45.             ll res=(p-1)/(u-1);
  46.             ans*=res;
  47.         }
  48.     }
  49.     if(n>1) ans*=(1+n);
  50.     return ans;
  51. }
  52. int main()
  53. {
  54.     prime_gen(1e8);
  55.     int t;
  56.     cin>>t;
  57.     while(t--)
  58.     {
  59.         ll n;
  60.         cin>>n;
  61.        ll ans=SOD(n);
  62.         cout<<ans-n<<endl;
  63.     }
  64. }
  65.  
Advertisement
Add Comment
Please, Sign In to add comment