Pabon_SEC

Euler Totient Sieve

Aug 22nd, 2016
226
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.85 KB | None | 0 0
  1. /***
  2.  
  3. Bismillahir Rahmanir Rahim
  4.  
  5.  _______
  6. |   __  \           _____
  7. |  |__|  )_______   |   /     ____    ______
  8. |   ____/ \__    \  |  |__   /    \  |      \
  9. |  (        / __  \ |  __ \ /  __  \ |   /\  \
  10. |  |       (____  / |     / \      / |__/  \  )
  11. |__|            \/  |____/   \____/         \/
  12.  
  13. ***/
  14.  
  15. #include<bits/stdc++.h>
  16. #define M 1000005
  17.  
  18. using namespace std;
  19.  
  20. int phi[M];
  21.  
  22. void calculatePhi()
  23. {
  24.     int i,p,k;
  25.  
  26.     for(i=1 ; i<M ; i++) phi[i] = i;
  27.  
  28.     for(p=2 ; p<M ; p++)
  29.     {
  30.         if(phi[p]==p) // p যদি প্রাইম হয়
  31.         {
  32.             for(k=p ; k<M ; k+=p)
  33.             {
  34.                 phi[k]-=phi[k]/p;
  35.             }
  36.         }
  37.     }
  38.  
  39.     return ;
  40. }
  41.  
  42. int main()
  43. {
  44.     int n;
  45.  
  46.     calculatePhi();
  47.  
  48.     while(cin>>n)
  49.     {
  50.         cout<<phi[n]<<endl;
  51.     }
  52.  
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment