Pagini recente » Cod sursa (job #3284726) | Cod sursa (job #115829) | Cod sursa (job #1149674) | Cod sursa (job #322299) | Cod sursa (job #524221)
Cod sursa(job #524221)
type bitvector=array[1..20]of byte;
var a:array[0..9,1..1000000]of integer;
n:longint; s:int64;
function nextbit(var a:bitvector; n:byte):boolean;
var k:byte;
begin
k:=1;
while a[k]=1 do
begin
a[k]:=0;
inc(k);
if k>n then break;
end;
if k<=n then a[k]:=1;
nextbit:=not(k>n);
end;
procedure zeros(var a:bitvector; n:byte);
var i:byte;
begin
for i:=1 to n do a[i]:=0;
end;
procedure init;
var f:text; i,j:longint;
begin
assign(f, 'fractii.in');
reset(f);
read(f,n);
close(f);
s:=0;
for i:=0 to 9 do
for j:=1 to n do
a[i,j]:=0;
end;
procedure rez;
var f:text;
begin
assign(f, 'fractii.out');
rewrite(f);
write(f,s);
close(f);
end;
procedure calc;
var i,j,k:longint; s1,p1,n1:int64; bits:bitvector;
begin
for i:=2 to 1000 do
if a[0,i]=0
then begin
j:=i*2;
while j<=n do
begin
inc(a[0,j]);
a[a[0,j],j]:=i;
inc(j,i);
end;
end;
{
for i:=0 to 9 do
begin
for j:=1 to n do write(a[i,j],' '); writeln;
end;
}
s:=1;
for i:=2 to n do
if a[0,i]=0
then
begin
s:=s+2*(i-1);
end
else
begin
p1:=i;
for k:=1 to a[0,i] do
p1:=p1*(a[k,i]-1)div a[k,i];
s:=s+p1*2;
end;
end;
begin
init;
calc;
rez;
end.