Cod sursa(job #222283)

Utilizator kis_lorikis levente lorand kis_lori Data 21 noiembrie 2008 19:13:33
Problema Sum Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.7 kb
const max=100000;
var n,x,i,j:longint;
    v,a,b:array [1..100010] of longint;
    p:array [1..100010] of int64;
begin
 assign(input,'sum.in'); reset(input);
 assign(output,'sum.out'); rewrite(output);
  for i:=2 to trunc(sqrt(max)) do
   if v[i]=0 then
    for j:=1 to max div i do v[i*j]:=i;
  for i:=2 to max do
   if v[i]=0 then v[i]:=i;
  for i:=2 to max do begin
   b[i]:=i;
   while b[i] mod v[i]=0 do b[i]:=b[i] div v[i];
   a[i]:=i div b[i];
   if b[i]=1 then p[i]:=i-(i div v[i])
             else p[i]:=p[a[i]]*p[b[i]];
  end;
  for i:=2 to max do p[i]:=2*p[i]*i;
  readln(n);
  for i:=1 to n do begin
   readln(x);
   writeln(p[x]);
  end;
 close(input); close(output);
end.