dlake 2010-07-18 17:08:00
点我顶贴
收藏
删除
Description
如果一个正整数等于它的所有真因子之和,则称该数为“完数”,或称“完全数”。输入正整数n的值,输出不超过n的最大完数。
Input
只有一行且只有一个正整数:n
(1<=n<=10^8)
Output
只有一行且只有一个正整数:不超过n的最大完数
Sample Input
10
Sample Output
6
Source
较难题
我做的题目
var
s,nn,n:longint;
a:array[1..100]of integer;
i,j:integer;
begin
readln(n);nn:=n;
while (nn>=6) do
begin
fillchar(a,sizeof(a),0);
s:=1;
for i:=2 to (trunc(sqrt(nn))) do
if nn mod i=0 then
s:=s+i+nn div i;
if s=nn then
begin
writeln(nn);
halt;
end;
dec(nn);
end;
writeln(0);
end.
要死的是范围是10^8 , 10^6以上铁定超时。