您的位置:首页 > 其它

【2012.03.09普及组】约数和 (Standard IO)

2016-07-21 11:44 447 查看


题目描述

给你一个数N,需要你算出这个数所有约数的和。(N的约数指能整除N的正整数),例如12的约数有1,2,3,4,6,12。所以约数和为1+2+3+4+6+12=28

题解:
注意:
  计算出结果的数记录下来,有可能有重复的。

代码:

var
a:array[0..5000001] of longint;
n,s,i,j,ans:longint;
begin
readln(n);
for i:=1 to n do
begin
readln(s);ans:=0;
if a[s]>0 then
begin
writeln(a[s]);
continue;
end
else
begin
for j:=1 to trunc(sqrt(s)) do
if s mod j=0 then
if j=s div j then
ans:=ans+j
else ans:=ans+j+s div j;
a[s]:=ans;
writeln(ans);
end;
end;
end.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  1401