RosettaCodeData/Task/Amicable-pairs/XPL0/amicable-pairs.xpl0
2023-07-01 13:44:08 -04:00

27 lines
602 B
Text

func SumDiv(Num); \Return sum of proper divisors of Num
int Num, Div, Sum, Quot;
[Div:= 2;
Sum:= 0;
loop [Quot:= Num/Div;
if Div > Quot then quit;
if rem(0) = 0 then
[Sum:= Sum + Div;
if Div # Quot then Sum:= Sum + Quot;
];
Div:= Div+1;
];
return Sum+1;
];
def Limit = 20000;
int Tbl(Limit), N, M;
[for N:= 0 to Limit-1 do
Tbl(N):= SumDiv(N);
for N:= 1 to Limit-1 do
[M:= Tbl(N);
if M<Limit & N=Tbl(M) & M>N then
[IntOut(0, N); ChOut(0, 9\tab\);
IntOut(0, M); CrLf(0);
];
];
]