Cod sursa(job #680716)

Utilizator andreifirstCioara Andrei Ioan andreifirst Data 15 februarie 2012 20:55:22
Problema Suma si numarul divizorilor Scor 10
Compilator fpc Status done
Runda Arhiva educationala Marime 1.11 kb
const max=1000000;

var v:array[1..max] of boolean;
    pr:array [1..max] of longint;
    ii, i, j, m, x, t:longint;
    li, lj:int64;
    nr, s, p, r:longint;
    f, g:text;

begin
assign (f, 'ssnd.in'); reset (f);
assign (g, 'ssnd.out'); rewrite (g);

{ciurul lui eratostenos}
m:=1; pr[m]:=2;
li:=3;
while li <= max do
  begin
  if v[li]= false then
    begin
    inc (m);
    pr[m]:=li;
    lj:= li*li;
    while lj <= max do begin v[lj]:=true; lj:=lj+li*2; end;
    end;
  li:=li+2;
  end;

for i := 1 to m do write (pr[i], ' ');


read (f, t);
for ii := 1 to t do
  begin
  nr:=1; s:=1;
  read (f, x);
  i:=0;
  while x<>1 do
    begin
    i:=i+1;
    if x mod pr[i] = 0 then
      begin
      p:=0;
      while x mod pr[i]=0 do
        begin
        p:=p+1;
        x:= x div pr[i];
        end;
      nr:=nr*(p+1);     {formula numar}
      r:=1;
      for j := 1 to p+1 do r:=r*pr[i] mod 9973;             {ridicare la putere}
      s:=(s*(r-1)div(pr[i]-1)) mod 9973;         {formula suma}
      end;
    end;
  writeln (g, nr,' ', s);
  end;

close (f); close (g);
end.