Pagini recente » Cod sursa (job #1557128) | Cod sursa (job #1824063) | Cod sursa (job #1461085) | Cod sursa (job #2254302) | Cod sursa (job #53545)
Cod sursa(job #53545)
var n,nr,r:int64;
phi:array[1..1000000] of longint;
i,j:longint;
f,g:text;
function cmmdc(a,b:longint):longint;
var c:longint;
begin
while b<>0 do begin
c:=a mod b;
a:=b;
b:=c;
end;
cmmdc:=a;
end;
begin
assign(f,'fractii.in'); reset(f);
assign(g,'fractii.out'); rewrite(g);
read(f,n);
r:=1;
for i:=2 to n do begin
if phi[i]=0 then begin
nr:=i;
phi[i]:=nr;
for j:=2 to trunc(sqrt(n)) do begin
if nr mod j=0 then
phi[i]:=(phi[i]*(j-1)) div j;
while nr mod j=0 do
nr:=nr div j;
end;
if nr>1 then
phi[i]:=(phi[i]*(nr-1)) div nr;
r:=r+(phi[i] shl 1);
j:=1;
while j<n do begin
inc(j);
if cmmdc(j,i)=1 then
phi[j*i]:=phi[j]*phi[i];
end;
end
else
r:=r+(phi[i] shl 1);
end;
writeln(g,r);
closE(f); close(g);
end.