Pagini recente » Cod sursa (job #912725) | Cod sursa (job #118679) | Cod sursa (job #812215) | Cod sursa (job #461434) | Cod sursa (job #117781)
Cod sursa(job #117781)
var fi,fo:text;
rez,l,nr_div,n:int64;
ct,i1,j1,k,kl:longint;
prime:array[1..100000]of byte;
m:array[1..100000,1..100000]of int64;
primee:array[1..100000]of longint;
procedure gen(ba:longint);
var i,j:longint;
begin
i:=3;
primee[1]:=2;
l:=1;
prime[1]:=1;
while i<=ba do
begin
if prime[i]=0 then
begin
j:=3*i;
inc(l);
primee[l]:=i;
while j<=ba do
begin
prime[j]:=1; inc(j,i);
end;
end;
inc(i,2);
end;
end;
procedure prim(nr:longint);
var i:longint;
begin
ct:=1; nr_div:=0; i:=1;
if (nr=2)or((prime[nr]=0)and(nr and 1=1)) then
begin
inc(nr_div);
exit;
end;
if (sqrt(nr)=trunc(sqrt(nr)))or(nr mod 4=0) then
begin
ct:=2;
exit;
end;
while i<=l do
if (nr mod primee[i]=0) then
begin
inc(nr_div);
nr:=nr div primee[i];
if nr=1 then exit;
if nr mod primee[i] = 0 then
begin
ct:=2;
exit;
end;
if prime[nr]=0 then
begin
inc(nr_div);
exit;
end;
inc(i);
end
else inc(i);
end;
procedure verif(i:longint);
begin
prim(i);
if ct=1 then
if nr_div and 1 = 1 then rez:=rez + m[k,i]
else rez:=rez - m[k,i];
end;
begin
assign(fi,'fractii.in'); reset(fi);
assign(fo,'fractii.out'); rewrite(fo);
readln(fi,kl);
gen(100000);
for k:=1 to kl do
begin
rez:=0;
readln(fi,n);
for i1:=2 to n do
begin
if n mod i1=0 then
begin
m[k,i1]:=0;
for j1:=1 to (2*n div i1) do
inc(m[k,i1],i1*j1);
if (m[k,i1]>0) then verif(i1);
end;
end;
rez:=(n*(2*n+1))-rez;
writeln(fo,rez);
end;
close(fi); close(fo);
end.