Cod sursa(job #326097)
program fractii;
var phi:array[1..10000000] of int64;
i,j,k,sol,n:integer;
f,g:text;
begin
assign(f,'fractii.in');
reset(f);
assign(g,'fractii.out');
rewrite(g);
read(f,n);
fillchar(phi,sizeof(phi),0);
phi[1]:=1;
sol:=1;
for i:=2 to n do
begin
if phi[i]=0 then
begin
phi[i]:=i-1;
j:=i*i;
while j<=n do
begin
phi[j]:=i;
j:=j+i;
end;
end
else
begin
j:=phi[i];
phi[i]:=j-1;
k:=i div j;
while (k mod j=0) do
begin
phi[i]:=phi[i]*j;
k:=k div j;
end;
phi[i]:=phi[i]*phi[k];
end;
sol:=sol+2*phi[i];
end;
write(g,sol);
close(f); close(g);
end.