Pagini recente » Cod sursa (job #364035) | Cod sursa (job #1254794) | Cod sursa (job #1680349) | Cod sursa (job #1302791) | Cod sursa (job #965356)
Cod sursa(job #965356)
program suma_si_numarul_divizorilor;
var ciur:array [1..1000000] of byte;
prime:array [1..100000] of longint;
k,t,i,j:longint;
n,sum,p,s,nr:int64;
function putere(n,p:int64):int64;
var m,rez:int64;
begin
m:=n;
rez:=1;
while p>0 do
begin
if p mod 2 =1 then rez:=(rez*m);
m:=sqr(m);
p:=p div 2;
end;
putere:=rez;
end;
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;
while n mod prime[j]=0 do
begin
n:=n div prime[j];
inc(k);
end;
nr:=nr*(k+1);
p:=putere(prime[j],k+1)-1;
p:=p div (prime[j]-1);
sum:=(sum*p)mod 9973;
inc(j);
end;
writeln(nr,' ',sum);
end;
close(output);
end.