Pagini recente » Cod sursa (job #982566) | Cod sursa (job #1030945) | Cod sursa (job #2640089) | Cod sursa (job #454850) | Cod sursa (job #479850)
Cod sursa(job #479850)
var fi,fo:text;
i,n,x,a,b,int,t:longint;
sum:qword;
vl,p,pr,vrf: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,rad:longint;
begin
p[1]:=1;
p[2]:=0;
rad:=trunc(sqrt(nmax));
for i:=2 to rad do
begin
k:=i*i;
while k<=nmax do
begin
p[k]:=1;
k:=k+i;
end;
end;
t:=1;
for i:=1 to nmax do
begin
vl[i]:=i;
if p[i]=0 then
begin
pr[t]:=i;
inc(t);
end;
end;
dec(t);
// 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);
generare;
scor;
close(fi);
close(fo);
end.