Pabon_SEC

GCD - Extreme (II)

Apr 6th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.77 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define mx 4000002
  3.  
  4. using namespace std;
  5.  
  6. int phi[mx];
  7.  
  8. long long ans[mx];
  9.  
  10. void EulerPhi()
  11. {
  12.     int i,j;
  13.  
  14.     for(i=1;i<mx;i++)
  15.     {
  16.         phi[i] = i;
  17.     }
  18.  
  19.     for(i=2;i<mx;i++)
  20.     {
  21.         if(phi[i]==i)
  22.         {
  23.             for(j=i;j<mx;j+=i)
  24.             {
  25.                 phi[j]-=phi[j]/i;
  26.             }
  27.         }
  28.     }
  29. }
  30.  
  31. void generateAns()
  32. {
  33.     int i,j;
  34.  
  35.     for(i=1;i<mx;i++)
  36.     {
  37.         for(j=i+i;j<mx;j+=i)
  38.         {
  39.             ans[j]+=i*phi[j/i];
  40.         }
  41.     }
  42.  
  43.     for(i=2;i<mx;i++)
  44.     {
  45.         ans[i]+=ans[i-1];
  46.     }
  47. }
  48.  
  49. int main()
  50. {
  51.     EulerPhi();
  52.  
  53.     generateAns();
  54.  
  55.     int n;
  56.  
  57.     while(scanf("%d",&n)&&n)
  58.     {
  59.         printf("%lld\n",ans[n]);
  60.     }
  61.  
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment