next up previous contents
Next: Decimal to Roman Numerals Up: Mathematical Magic Previous: Mathematical Magic

Solution

    PROGRAM Math_Majik
     IMPLICIT NONE
     INTEGER num, tnum
      outa: DO
       PRINT*, "Type in your number (0 terminates)"
       READ*, num
       IF (num .LE. 0) EXIT
       inna: DO
        tnum = num/2
        IF (2*tnum .EQ. num) THEN ! num even
         num = tnum
        ELSE ! Odd
         num = 3*num+1
        END IF
        PRINT*, num
        IF (num == 1) THEN
         PRINT*, "Sequence finishes nicely"
         EXIT
        ELSE IF (num == 13) THEN
         PRINT*, "Yoiks, Extreme bad luck encountered - Exit"
         EXIT outa
        END IF
       END DO inna
      END DO outa
    END PROGRAM Math_Majik

  1. 7 gives

     22 11 34 17 52 26 13
  2. 106, 46, 3, 0 gives

     53 160 80 40 20 10 5 16 8 4 2 1
     23 70 35 106 53 160 80 40 20 10 5 16 8 4 2 1
     10 5 16 8 4 2 1
     <end>


next up previous contents
Next: Decimal to Roman Numerals Up: Mathematical Magic Previous: Mathematical Magic

©University of Liverpool, 1997
Thu May 29 10:11:26 BST 1997
Not for commercial use.