Professional Documents
Culture Documents
Euler's Totient Function
Euler's Totient Function
Euler's Totient Function
h>
#define pi acos(-1)
bool mark[NUM];
vector <int> v;
void sieve()
mark[1]=true;
mark[i]=true;
v.push_back(2);
if(!mark[i])
mark[j]=true;
}
for(ll i=1; i<=NUM; i++)
if(!mark[i])
v.push_back(i);
return;
ll res,val,i;
res = n;
val=sqrt(n)+1;
if(n%v[i]==0)
while(n%v[i]==0)
n/=v[i];
res-=(res/v[i]);
if(n>1)
res-=(res/n);
return res;
}
int main()
FastRead
sieve();
ll n;
cin>>n;
cout<<phi(n);
return 0;