Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- bool isp[10009999];
- ll phi[10009999];
- ll ispr[10099999];
- ll divfactor[1000009];
- vector<ll>prm;
- void sv(ll a,ll b)
- {
- for(ll i=a; i<=b; i++)
- {
- phi[i-a+1]=i;
- divfactor[i-a+1]=1;
- }
- memset(isp,true,sizeof isp);
- for(ll i=2; i<=10000999; i++)
- {
- if(isp[i])
- {
- prm.push_back(i);
- for(ll j=i*i; j<=10000999; j+=i)
- {
- isp[j]=false;
- }
- }
- }
- memset(ispr,0,sizeof ispr);
- for(int x=0; x<prm.size(); x++)
- {
- ll loka = (a/prm[x])*prm[x];
- for(ll j=loka-prm[x]; j<=b; j+=prm[x])
- {
- if(j>=a && j<=b)
- {
- ispr[j-a+1]=1;
- }
- }
- }
- for(int x=0; x<prm.size(); x++)
- {
- ll ila =(a/prm[x])*prm[x];
- for(ll j=ila; j<=b; j+=prm[x])
- {
- if(j>=a && j<=b)
- {
- phi[j-a+1]/=(prm[x]);
- phi[j-a+1]*=(prm[x]-1);
- ll lokap = j;
- while(lokap%prm[x]==0)
- {
- divfactor[j-a+1]*=prm[x];
- lokap/=prm[x];
- }
- }
- }
- }
- for(ll aku=a; aku<=b; aku++)
- {
- ll kola = (aku/divfactor[aku-a+1]);
- if(kola!=1)
- {
- phi[aku-a+1]/=kola;
- phi[aku-a+1]*=(kola-1);
- }
- }
- }
- int main()
- {
- //freopen("out.txt","w",stdout);
- ll a,b;
- scanf("%llu %llu",&a,&b);
- sv(a,b);
- for(ll i=a; i<=b; i++)
- {
- if(i==1)
- printf("1\n");
- else if(ispr[i-a+1])
- printf("%llu\n",phi[i-a+1]);
- else
- printf("%llu\n",i-1);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement