fork download
  1.  
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. map<long long int,int>m;
  6.  
  7. void finding(long long int x){
  8. long long int n=x;
  9. while(x%2==0){
  10. m[2]++;
  11. x/=2;
  12. }
  13. for(int i=3;i<x;i+=2){
  14. while(x%i==0){
  15. m[i]++;
  16. x/=i;
  17. }
  18. }
  19. if(x>1){
  20. m[x]++;
  21. }
  22. }
  23.  
  24. long long int power(long long int x,int y){
  25. if(y==0)return 1;
  26. long long int temp=power(x,y/2);
  27. temp=temp*temp;
  28. if(y&1){
  29. return (x*temp);
  30. }else{
  31. return (temp);
  32. }
  33. }
  34.  
  35.  
  36. long long int sums(){
  37. long long int ans=1;
  38. for(map<long long int,int>::iterator it=m.begin();it!=m.end();it++){
  39. long powerrangers=power(it->first,it->second+1)-1;
  40. powerrangers/=((it->first-1));
  41. ans*=powerrangers;
  42. }
  43. return ans;
  44. }
  45.  
  46.  
  47. int main()
  48. {
  49. int t;
  50. cin>>t;
  51. while(t--){
  52. long long int n;
  53. cin>>n;
  54. m.clear();
  55. finding(n);
  56. long long int sum=sums();
  57. cout<<sum<<"\n";
  58. }
  59. return 0;
  60. }
  61.  
  62.  
Success #stdin #stdout 0s 3476KB
stdin
2
6
5
stdout
12
6