Pagini recente » Rating Daniela Gurschi (dana_chisinau) | Cod sursa (job #117787) | Cod sursa (job #281164) | Cod sursa (job #293759) | Cod sursa (job #118021)
Cod sursa(job #118021)
var fi,fo:text;
n,ct,m,l,phi:int64;
prime:array[1..50000]of longint;
puteri:array[1..100000]of longint;
prime2:array[1..100000]of byte;
primee:array[1..90000]of longint;
ap:array[1..100000]of int64;
procedure gen(ba:longint);
var i,j:int64;
begin
i:=3;
primee[1]:=2;
l:=1;
prime2[1]:=1;
while i<=ba do
begin
if prime2[i]=0 then
begin
j:=i*i;
inc(l);
primee[l]:=i;
while j<=ba do
begin
prime2[j]:=1; inc(j,i);
end;
end;
inc(i,2);
end;
end;
procedure desc(n:longint);
var i:longint;
r,nenner,zahler:int64;
begin
nenner:=1; zahler:=1;
for i:=1 to l do
begin
if n mod primee[i]=0 then
begin
nenner:=nenner*primee[i];
zahler:=(primee[i]-1)*zahler;
end;
end;
phi:=n*zahler div nenner;
end;
procedure solv(n:longint);
var rez:int64;
i:longint;
begin
desc(n);
rez:=n*phi shl 1;
writeln(fo,rez);
ap[n]:=rez;
end;
var i:longint;
begin
assign(fi,'sum.in'); reset(fi);
assign(fo,'sum.out'); rewrite(fo);
read(fi,m);
gen(100000);
for i:=1 to m do
begin
read(fi,n);
if ap[n]<>0 then writeln(fo,ap[n])
else
if (n and 1=1)and(prime2[n]=0)then writeln(fo,(n-1)*n shl 1)
else solv(n);
end;
close(fi);
close(fo);
end.