Cod sursa(job #965336)

Utilizator RusuAlexeiRusu Alexei RusuAlexei Data 23 iunie 2013 22:21:40
Problema Suma si numarul divizorilor Scor 40
Compilator fpc Status done
Runda Arhiva educationala Marime 0.99 kb
program suma_si_numarul_divizorilor;
  var ciur:array [1..1000000] of byte;
      prime:array [1..100000] of longint;
      n,k,t,i,j,nr:longint;
      sum,p,s:int64;


begin
  assign(input,'ssnd.in');
  reset(input);
  assign(output,'ssnd.out');
  rewrite(output);

  for i:=2 to 1000000 do
    if ciur[i]=0 then
      begin
        j:=2*i;
        while j<=1000000 do
          begin
            ciur[j]:=1;
            j:=j+i;
          end;
        inc(k);
        prime[k]:=i;
      end;

  readln(t);
  for i:=1 to t do
    begin
      readln(n);
      j:=1;
      nr:=1;sum:=1;
      while n<>1 do
        begin
          k:=0;p:=1;s:=1;
          while n mod prime[j]=0 do
            begin
              n:=n div prime[j];
              inc(k);
              p:=p*prime[j];
              s:=s+p;
            end;
          nr:=nr*(k+1);
          sum:=(sum*s)mod 9973;
          inc(j);
        end;
      writeln(nr,' ',sum);
    end;
  close(output);
end.