Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll unsigned long long
- using namespace std;
- bool isp[10000009];
- ll phi[10000009];
- ll ispr[10000009];
- vector<ll>prm;
- void sv(ll a,ll b)
- {
- for(ll i=a; i<=b; i++)
- phi[i-a+1]=i;
- memset(isp,true,sizeof isp);
- for(ll i=2; i<=10000005; i++)
- {
- if(isp[i])
- {
- prm.push_back(i);
- for(ll j=i*i; j<=10000005; j+=i)
- {
- isp[j]=false;
- }
- }
- }
- //cout<<"ok"<<endl;
- //cout<<prm.size()<<endl;
- memset(ispr,0,sizeof ispr);
- for(int x=0; x<prm.size(); x++)
- {
- ll loka = (a/prm[x])*prm[x];
- for(ll j=loka; j<=b; j+=prm[x])
- {
- if(j>=a && j<=b)
- {
- ispr[j-a+1]=1;
- }
- }
- }
- for(int x=0; x<prm.size(); x++)
- {
- ll i =(a/prm[x])*prm[x];
- for(ll j=i; j<=b; j+=prm[x])
- {
- if(j>=a && j<=b)
- {
- ll loka = (prm[x]-1);
- phi[j-a+1]/=(prm[x]);
- phi[j-a+1]*=(prm[x]-1);
- }
- }
- }
- }
- int main()
- {
- 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