欧拉函数
n<=231−1
const
maxn=1006350;
var
check:array[0..maxn]of boolean;
prime:array[0..maxn]of longint;
i,j:longint;
n,s,ans,len,t:longint;
begin
readln(n);
s:=n; ans:=n; n:=trunc(sqrt(n)); len:=0;
for i:=2 to n do
begin
if check[i]=false
then begin inc(len); prime[len]:=i; end;
for j:=1 to len do
begin
if prime[j]*i>n
then break;
check[prime[j]*i]:=true;
if i mod prime[j]=0
then break;
end;
end;
for i:=1 to len do
begin
if s mod prime[i]=0
then
begin
ans:=(ans div prime[i])*(prime[i]-1);
while s mod prime[i]=0 do
s:=s div prime[i];
end;
end;
if s<>1
then ans:=(ans div s)*(s-1);
writeln(ans);
end.