回 帖 发 新 帖 刷新版面

主题:求助,pascal题

找3-1000中的亲密数对,注意不要重复显示。(如果A的因子和等于B,B的因子和等于A,且A<>B,则称A,B为亲密数对。例如284和220, 220的因子有1,2,4,5,11,20,22,44,55,110,他们和为284,284的因子有1,2,4,71 112,他们和为220。[em18]

回复列表 (共2个回复)

沙发

同一个贴子不要重复发两次

板凳

program game;
var a:array [3..1000] of longint;
procedure pre;
var i,j:integer;
begin
  fillchar(a,sizeof(a),0);
  for i:=3 to 1000 do
    for j:=1 to i-1 do
      if (i mod j=0) then a[i]:=a[i]+j;
end;
procedure main;
var i:integer;
    used:array [3..1000] of boolean;
begin
  fillchar(used,sizeof(used),false);
  for i:=3 to 1000 do
    if (a[a[i]]=i) and (i<>a[i]) and (not(used[i]) or not(used[a[i]])) then
    begin
      writeln(i,' ',a[i]);
      used[i]:=true;
      used[a[i]]:=true;
    end;
end;
begin
  pre;
  main;
end.

我来回复

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