Tính tổng các ước của số nguyên dương n (n ≤ 10^12).
Dữ liệu nhập:
- Dòng đầu chứa số bộ test.
- Các dòng sau, mỗi dòng chứa 1 số nguyên dương n (n ≤ 10^12).
Kết quả:
- Mỗi test in trên 1 dòng chứa 1 số nguyên là tổng các ước của test tương ứng.
Ví dụ input 392
29
82 output 92 co 6 uoc. Tong uoc la: 168
29 co 2 uoc. Tong uoc la: 30
82 co 4 uoc. Tong uoc la: 126
uses crt;
const fi='standard.inp';
fo='standard.out';
var f1,f2:text;
a:array[1..100]of integer;
i,j,n,dem,t:integer;
begin
clrscr;
assign(f1,fi); reset(f1);
assign(f2,fo); rewrite(f2);
readln(f1,n);
for i:=1 to n do
readln(f1,a[i]);
{--------------------xu-ly------------------}
for i:=1 to n do
begin
write(f2,a[i],' co so uoc la: ');
dem:=0;
t:=0;
for j:=1 to a[i] do
if a[i] mod j=0 then
begin
dem:=dem+1;
t:=t+j;
end;
writeln(f2,dem.,' tong uoc la: ',t);
end;
close(f1);
close(f2);
readln;
end.
var n:qword;i:longint;
a:array[1..1000] of longint;
function du(x:qword):qword;
var k,d:longint;
begin
d:=0;
for k:=1 to trunc(sqrt(x)) do
begin
if x mod k=0 then
begin
d:=d+2;
end;
end;
if sqrt(x)=trunc(sqrt(x)) then dec(d);
du:=d;
end;
function tu(s:qword):qword;
var t:qword;j:longint;
begin
t:=0;
for j:=1 to trunc(sqrt(s)) do
if s mod j=0 then t:=t+j+(s div j);
tu:=t;
end;
begin
readln(n);
for i:=1 to n do
readln(a[i]);
for i:=1 to n do
writeln(a[i],' co ',du(a[i]),' uoc. Tong uoc la: ',tu(a[i]));
readln;
end.