31 lines
616 B
Plaintext
31 lines
616 B
Plaintext
PROGRAM ULAM
|
|
|
|
!$DOUBLE
|
|
|
|
PROCEDURE HAILSTONE(X,PRT%->COUNT)
|
|
COUNT=1
|
|
IF PRT% THEN PRINT(X,) END IF
|
|
REPEAT
|
|
IF X/2<>INT(X/2) THEN
|
|
X=X*3+1
|
|
ELSE
|
|
X=X/2
|
|
END IF
|
|
IF PRT% THEN PRINT(X,) END IF
|
|
COUNT=COUNT+1
|
|
UNTIL X=1
|
|
IF PRT% THEN PRINT END IF
|
|
END PROCEDURE
|
|
|
|
BEGIN
|
|
HAILSTONE(27,TRUE->COUNT)
|
|
PRINT("Sequence length for 27:";COUNT)
|
|
MAX_COUNT=2
|
|
NMAX=2
|
|
FOR I=3 TO 100000 DO
|
|
HAILSTONE(I,FALSE->COUNT)
|
|
IF COUNT>MAX_COUNT THEN NMAX=I MAX_COUNT=COUNT END IF
|
|
END FOR
|
|
PRINT("Max. number is";NMAX;" with";MAX_COUNT;"elements")
|
|
END PROGRAM
|