Pagini recente » Cod sursa (job #1008428) | Cod sursa (job #1507557) | Cod sursa (job #419742) | Cod sursa (job #419739) | Cod sursa (job #418945)
Cod sursa(job #418945)
program fractii;
type vec=array [1..1100000] of longint;
var a,b,c,v:vec;
n,k,i,j,s:longint;
f,t:text;
function transS(n:longint; c:vec) :int64;
var s:int64;
begin
s:=0;
for i:=2 to n do
s:=s+c[i];
transS:=2*S+1;
end;
begin
assign(f,'fractii.in');
reset(f);
assign(t,'fractii.out');
rewrite(t);
read(f,n);
close(f);
{------------------------}
k:=trunc(sqrt(n));
for i:=2 to k do
for j:=1 to n div i do
v[i*j]:=i;
for i:=k+1 to n do
if v[i]=0 then
begin
s:=i;
v[i]:=s;
end;
for i:=2 to n do
begin
a[i]:=v[i];
j:=i div a[i];
while j mod a[i]=0 do
a[i]:=a[i]*v[i];
b[i]:=i div a[i];
if b[i]=1 then c[i]:=i-i div v[i]
else c[i]:=c[a[i]]*c[b[i]];
end;
{------------------------}
write(t,transS(n,c));
close(t);
end.