回 帖 发 新 帖 刷新版面

主题:“重完全数”

6的因子有1,2,3,6,它们的和是12,这个和恰好是原数的2倍,我们把6叫作二重完全数。120的因子有1,2,3,4,5,6,8,10,12,15,20,24,30,40,60,120,它们的和是360,这恰好是原数的3倍,我们把120叫作三重完全数。请编程序,再找出一个三重完全数。

回复列表 (共7个回复)

沙发

program lx;
var
  haveanswer:boolean;
begin
  haveanswer:=false;
  i:=1;
  repeat
    ss:=0;
    for m:=1 to trunc(sqrt(i)) do
      if i mod m=0 then begin
        ss:=ss+m;
        if m<>(i div m) then ss:=ss+(i div m);
      end;
    if ss=i*3 then haveanswer=true;
  until haveanswer=true;
  writeln(i);  
end.

我没调试过, 你自己试试吧.

板凳

在until一句前面还有一句:
i:=i+1;

3 楼

我调试给你打分,谢谢支持

4 楼

搜索

5 楼

maxumi朋友你给的程序没有经过调试,问题太多,我不知道如何理解,你能调试好后在发吗?谢谢

6 楼

var i,n,k,s:integer;a:packed array[1..100] of integer;
begin
 k:=0;{搜索}
 repeat
  k:=k+1;s:=0;n:=1;
  for i:=1 to k do
   if k mod i=0 then
    begin a[n]:=i;n:=n+1;{求出因子} end;
  for i:=1 to n-1 do s:=s+a[i];
 until (k*3=s)and(k<>120);{只求一个跳出}
 for i:=1 to n-1 do write(a[i]:4);
 writeln;
 write(k:10);
 readln
end.


运行结果:
   1   2   3   4   6   7   8  12  14  16  21  24  28  32  42  48  56  84  96  112  168  224  336  672
       672

验证正确

7 楼

太谢谢了caseissamll朋友

我来回复

您尚未登录,请登录后再回复。点此登录或注册