Cod sursa(job #117907)

Utilizator bogdan88Bogdan Popescu bogdan88 Data 22 decembrie 2007 18:53:03
Problema Sum Scor 65
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.92 kb
var fi,fo:text;
    n,ct,m:longint;
    prime:array[1..10000]of longint;
    puteri:array[1..100000]of longint;
procedure desc(n:longint);
var r,i:longint;
begin
  i:=2; ct:=0;
  while i<=n do
    begin
      if n mod i=0 then
        begin
          inc(ct);
          prime[ct]:=i;
          r:=1;
          while n mod i=0 do
            begin
              r:=r*i;
              n:=n div i;
            end;
          puteri[i]:=r;
        end;
      inc(i);
    end;
end;
procedure solv(n:longint);
var phi,rez:int64;
    i:longint;
begin
  desc(n);
  phi:=1;
  for i:=1 to ct do
     phi:=phi*(prime[i]-1)*puteri[prime[i]] div prime[i];
  rez:=2*n*phi;
  writeln(fo,rez);
end;
var i:longint;
begin
  assign(fi,'sum.in'); reset(fi);
  assign(fo,'sum.out'); rewrite(fo);
  read(fi,m);
  for i:=1 to m do
    begin
      read(fi,n);
      solv(n);
    end;
  close(fi);
  close(fo);
end.