28 lines
508 B
Text
28 lines
508 B
Text
PROGRAM AMICABLE
|
|
|
|
CONST LIMIT=20000
|
|
|
|
PROCEDURE SUMPROP(NUM->M)
|
|
IF NUM<2 THEN M=0 EXIT PROCEDURE
|
|
SUM=1
|
|
ROOT=SQR(NUM)
|
|
FOR I=2 TO ROOT-1 DO
|
|
IF (NUM=I*INT(NUM/I)) THEN
|
|
SUM=SUM+I+NUM/I
|
|
END IF
|
|
IF (NUM=ROOT*INT(NUM/ROOT)) THEN
|
|
SUM=SUM+ROOT
|
|
END IF
|
|
END FOR
|
|
M=SUM
|
|
END PROCEDURE
|
|
|
|
BEGIN
|
|
PRINT(CHR$(12);) ! CLS
|
|
PRINT("Amicable pairs < ";LIMIT)
|
|
FOR N=1 TO LIMIT DO
|
|
SUMPROP(N->M1)
|
|
SUMPROP(M1->M2)
|
|
IF (N=M2 AND N<M1) THEN PRINT(N,M1)
|
|
END FOR
|
|
END PROGRAM
|