Advertisement
Guest User

zan_nabil

a guest
Dec 3rd, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.87 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. bool isp[10009999];
  5. ll phi[10009999];
  6. ll ispr[10099999];
  7. ll divfactor[1000009];
  8. vector<ll>prm;
  9. void sv(ll a,ll b)
  10. {
  11.  
  12.     for(ll i=a; i<=b; i++)
  13.     {
  14.         phi[i-a+1]=i;
  15.         divfactor[i-a+1]=1;
  16.     }
  17.  
  18.     memset(isp,true,sizeof isp);
  19.     for(ll i=2; i<=10000999; i++)
  20.     {
  21.         if(isp[i])
  22.         {
  23.             prm.push_back(i);
  24.             for(ll j=i*i; j<=10000999; j+=i)
  25.             {
  26.                 isp[j]=false;
  27.  
  28.             }
  29.         }
  30.     }
  31.  
  32.     memset(ispr,0,sizeof ispr);
  33.     for(int x=0; x<prm.size(); x++)
  34.     {
  35.  
  36.         ll loka = (a/prm[x])*prm[x];
  37.         for(ll j=loka-prm[x]; j<=b; j+=prm[x])
  38.         {
  39.             if(j>=a && j<=b)
  40.             {
  41.                 ispr[j-a+1]=1;
  42.             }
  43.  
  44.         }
  45.  
  46.     }
  47.  
  48.  
  49.     for(int x=0; x<prm.size(); x++)
  50.     {
  51.         ll ila =(a/prm[x])*prm[x];
  52.  
  53.         for(ll j=ila; j<=b; j+=prm[x])
  54.         {
  55.             if(j>=a && j<=b)
  56.             {
  57.  
  58.                 phi[j-a+1]/=(prm[x]);
  59.                 phi[j-a+1]*=(prm[x]-1);
  60.                 ll lokap = j;
  61.                 while(lokap%prm[x]==0)
  62.                 {
  63.                     divfactor[j-a+1]*=prm[x];
  64.                     lokap/=prm[x];
  65.                 }
  66.  
  67.             }
  68.         }
  69.  
  70.     }
  71.  
  72.     for(ll aku=a; aku<=b; aku++)
  73.     {
  74.         ll kola = (aku/divfactor[aku-a+1]);
  75.         if(kola!=1)
  76.         {
  77.             phi[aku-a+1]/=kola;
  78.             phi[aku-a+1]*=(kola-1);
  79.         }
  80.  
  81.     }
  82.  
  83.  
  84.  
  85.  
  86. }
  87. int main()
  88. {
  89.     //freopen("out.txt","w",stdout);
  90.  
  91.  
  92.  
  93.     ll a,b;
  94.  
  95.     scanf("%llu %llu",&a,&b);
  96.     sv(a,b);
  97.     for(ll i=a; i<=b; i++)
  98.     {
  99.         if(i==1)
  100.             printf("1\n");
  101.         else if(ispr[i-a+1])
  102.             printf("%llu\n",phi[i-a+1]);
  103.         else
  104.             printf("%llu\n",i-1);
  105.  
  106.     }
  107.  
  108.  
  109.  
  110.     return 0;
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement