#include
#include
//求不大于n且与n互质的个数 可处理数据范围[1,10^12]
int bj[1000000];
int pdss(long long x)
{
long long i;
for(i=2;i*i<=x;i++)
{
if(bj[i]==0) if(x%i==0) return 0;
}
return 1;
}
int main()
{
int i,j,dj;long long x,na,ans;
//打素数表
bj[1]=1;
for(i=2;i<=99999;i++)
{
if(bj[i]==0)
{
int zj=2*i;
while(zj<99999)
{
bj[zj]=1;
zj+=i;
}
}
}
while(scanf("%lld",&x)!=EOF)
{
if(pdss(x)==1) ans=x-1;//若为质数,除了自己都互质
else
{
ans=x;na=x;
for(i=2;i*i<=na;i++)
{
if(x==1) break;
if(bj[i]==0)
{
dj=0;
while(x%i==0)
{
dj=1;
x=x/i;
}
if(dj==1)
{
ans*=(i-1);
ans/=i;
}
}
}
if(x!=1)//最后剩下一个大于sqrt(x)的素数 例子:20
{
ans*=(x-1);
ans/=x;
}
}
printf("%lld\n",ans);
}
return 0;
}