讨论 / 完数求思路
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以上铁定超时。

#1 dlake@2010-07-18 17:08:00
回复 删除
没人回答,自问自答,,(2^p-1)X2^(p-1)其中2^p-1一定要是质数
查看更多回复
提交回复