欧拉函数推导
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
ll Euler(ll n)
{
//Euler(n)=n*(1-1/p1)*(1-1/p2)...(1-1/pn)
//通分=n*((p1-1)/p1)*((p2-1)/p2)...((pn-1)/pn)
ll m=sqrt(n+0.5);
ll ans=n;
for(int i=2;i<=m;i++)// n的素因子i
{
if(n%i==0)
{
ans=ans/i*(i-1);
}
while(n%i==0)//不在考虑素因子i
n/=i;
}
if(n>1)//素因子大于m
ans=ans/n*(n-1);
return ans;
}
int main()
{
ll n;
while(cin>>n&&n)
{
cout<<Euler(n)<<endl;
}
return 0;
}