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

来源:互联网 发布:食品制造业数据 编辑:程序博客网 时间:2024/06/16 06:10

题目描述

给你一个数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.

1 0
原创粉丝点击