有一道pascal问题,要求程序,求亲和数的

.自然数a的因子是指能整除a的所有自然数,但不含a本身。例如12的因子为:1,2,3,4,6。若自然数a
的因子之和为b,而且b的因子之和又等于a,则称a,b为一对“亲和数” 。求最小的一对亲和数。

program p567631935;
var f:array[0..2000] of longint;
    x,i:longint;
function sum(x:longint):longint;
var i,ans:longint;
begin
  ans:=0;
  for i:=1 to x-1 do
  if (x mod i=0) then ans:=ans+i;
  exit(ans);
end;
begin
  for i:=1 to 2000 do f[i]:=sum(i);
  for i:=1 to 2000 do
  begin
    x:=f[i];
    if (x>2000)or(x=i) then continue;
    if (f[x]=i) then
    begin
      writeln(i,' ',x);
      halt;
    end;
  end;
end.

如果ab可以一样是(6,6),不一样算出来是(220,284)

[您的采纳是我们前进的不竭动力]

温馨提示:内容为网友见解,仅供参考
无其他回答

有一道pascal问题,要求程序,求亲和数的
if (x>2000)or(x=i) then continue; if (f[x]=i) then begin writeln(i,' ',x); halt; end; end;end.如果ab可以一样是(6,6),不一样算出来是(220,284)[您的采纳是我们前进的不竭动力]

pascal做亲和数
{计算x的因子之和的函数} function s(x:longint):longint;var i,n:longint;begin n:=1;for i:=2 to x-1 do if x mod i = 0 then n:=n+i;s:=n;end;{判断a,b是否亲和之函数} function ok(a,b:longint):boolean;begin ok:=s(a)=s(b);end;{主程序} var a,b,i,j,n...

pascal 亲和数
program QHS1;var a,b,y:integer;procedure sub(x:integer;var t:integer);var m:integer;begin t:=0;for m:=1 to x-1 do if x mod m=0 then t:=t+m end;begin a:=2;repeat inc(a);sub(a,b);sub(b,y);until (y=a)and(a<>b);writeln(' a,b:',a,' ',b);r...

pascal 亲和数 时间限制为1秒 100%的数据 (1<=n<=m<=200000) 这个是没...
if i mod j=0 then x:=x+j;if x<i then break;\/\/这里如果找到的比它小就退出,因为亲和数是一对的,肯定一个小一个大,为防止重复,只取x比i大的情况 for j:=1 to x div 2 do if x mod j=0 then y:=y+j;if (y=i) and (x<>y) then begin writeln(y,'--',x);t:...

pascal编程问题!高手进!
end. 第二题:program qinheshu(input,output); var a:array[2..1000] of integer; i,j:integer; function yinhe(n:integer):integer; var i,s:integer; begin for i:=1 to n-1 do if (n mod i=0) then s:=s+i; yinhe:=s; end; begin for i:=2 to 1000 do a[...

pascal问题(要求文件)欢迎高手
3.var s,i,j,n:longint;begin readln(n);s:=0;for i:=1 to n do for j:=1 to i do s:=s+i;writeln(s);end.

求两题Free Pascal程序,急需!!
第一题:var i:integer;function ok(a:integer):boolean;var i:integer;begin for i:=2 to trunc(sqrt(a)) do if a mod i=0 then exit(false);exit(true);end;begin for i:=3 to 89 do if ok(i) and ok(i+2) then writeln(i,' ',i+2);end.第二题:procedure ok(a,b...

相似回答
大家正在搜