Pagini recente » Cod sursa (job #32689) | Cod sursa (job #227975) | Cod sursa (job #504650) | Cod sursa (job #1215168) | Cod sursa (job #23843)
Cod sursa(job #23843)
{$IFDEF NORMAL}
{$I-,Q-,R-,S-}
{$ENDIF NORMAL}
{$IFDEF DEBUG}
{$I+,Q+,R+,S-}
{$ENDIF DEBUG}
{$IFDEF RELEASE}
{$I-,Q-,R-,S-}
{$ENDIF RELEASE}
var fi,fo:text;
i,n,x,a,b,int,t:longint;
sum:qword;
vl,p,pr:array[1..110000] of longint;
aa:array[1..110000] of longint;
nmax:longint;
procedure Euler(m,k:longint);
var i,j:longint;
rez:real;
begin
rez:=vl[m];
rez:=rez*(1-1/k);
vl[m]:=trunc(rez);
end;
procedure generare;
var i,j,k:longint;
begin
p[1]:=1;
p[2]:=0;
for i:=2 to nmax div 2+1 do
begin
k:=2*i;
while k<=nmax do
begin
p[k]:=1;
k:=k+i;
end;
end;
t:=1;
for i:=2 to nmax do
if p[i]=0 then
begin
pr[t]:=i;
inc(t);
end;
dec(t);
for i:=1 to nmax do
vl[i]:=i;
// writeln(fo,t);
end;
procedure scor;
var i,j,k,phi:longint;
begin
for i:=1 to t do
begin
vl[pr[i]]:=pr[i]-1;
k:=pr[i]*2;
while k<=nmax do
begin
Euler(k,pr[i]);
k:=k+pr[i];
end;
end;
for i:=1 to n do
begin
sum:=2*aa[i];
sum:=sum*vl[aa[i]];
writeln(fo,sum);
end;
end;
begin
assign(fi,'sum.in'); reset(fi);
assign(fo,'sum.out'); rewrite(fo);
readln(fi,n);
nmax:=0;
for i:=1 to n do
begin
readln(fi,aa[i]);
if aa[i]>nmax then nmax:=aa[i];
end;
inc(nmax,10);
generare;
scor;
close(fi);
close(fo);
end.