Display first 20 prime numbers

Small PLAN program to display the first 20 prime numbers.

#PROGRAM       PRIM40/PRIM
#DEFINE        NUMPRIMES=20
#LOWER
               PRIMES(NUMPRIMES)   [ STORAGE AREA FOR FOUND PRIMES
MESS           8H                  [ OUTPUT BUFFER FOR PRIME NUMBER
HTHOU          100000
#PRO
#ENT           0
      LDN   0  2                   [ SAVE 2 AS FIRST PRIME
      STO   0  PRIMES
      LDN   1  1
      LDN   0  3                   [ START AT 3
      LDN   4  NUMPRIMES
#
#     X0 = NUMBER TO CHECK
#     X1 = NUMBER OF PRIMES FOUND
#     X4 = NUMBER OF PRIMES TO FIND
#
#     TO CHECK IF CONTENT OF ACC 0 IS A PRIME
#     WE NEED TO DIVIDE BY ALL PRIMES FOUND SO FAR
#
CHK   LDN   2  0                   [ INDEX INTO TABLE OF PRIMES
LOOP  BXGE  2  1,FND               [ END OF PRIME TABLE ?
      LDX   7  0                   [ PUT NUMBER TO CHECK IN ACC 7
      LDN   6  0                   [ CLEAR ACC 6
      DVD   6  PRIMES(2)           [ DIVIDE BY PRIME FROM TABLE
      BZE   6  NEXT                [ DIVISIBLE SO THIS NUMBER IS NOT A PRIME
      ADN   2  1                   [ MOVE TO NEXT PRIME IN TABLE
      BRN      LOOP                [ AND TRY AGAIN
NEXT  ADN   0  2                   [ SKIP TO NEXT ODD NUMBER
      BRN      CHK                 [ AND CHECK IF PRIME
#
#     NEXT PRIME HAS BEEN FOUND
#
FND   STO   0  PRIMES(1)           [ STORE FOUND PRIME IN TABLE
      ADN   1  1                   [ AND INCREMENT COUNT
      BXL   1  4,NEXT              [ MORE TO FIND ?
#
#     DISPLAY ALL PRIMES FOUND
#
      LDN   2  0                   [ OFFSET IN TABLE TO DISPLAY
DISP  LDX   5  PRIMES(2)           [ GET PRIME NUMBER FROM TABLE
      LDN   6  0                   [ AND CONVERT TO
      DVR   5  HTHOU               [ FIVE DECIMAL CHARACTERS
      LDCT  7  #200
      LDX   3  '5/MESS'
      CBD   6  0(3)
      BCHX  3  *-1
      DISTY    '5/MESS'            [ DISPLAY PRIME NUMBER AS DECIMAL
      ADN   2  1
      BXL   2  1,DISP              [ SHOW NEXT PRIME IF THERE IS ONE
DONE  SUSWT    2HHH                [ ALL DONE :-)
#END

Output:

11.33.53<- LO PROGRAM PRIM
11.33.59<- EN
11.34.01 1.04 CORE GIVEN 192
DISPLAY : 00002
DISPLAY : 00003
DISPLAY : 00005
DISPLAY : 00007
DISPLAY : 00011
DISPLAY : 00013
DISPLAY : 00017
DISPLAY : 00019
DISPLAY : 00023
DISPLAY : 00029
DISPLAY : 00031
DISPLAY : 00037
DISPLAY : 00041
DISPLAY : 00043
DISPLAY : 00047
DISPLAY : 00053
DISPLAY : 00059
DISPLAY : 00061
DISPLAY : 00067
DISPLAY : 00071
1.11 :HALTED : HH
  • Last modified: 17/01/2024 11:55
  • by 127.0.0.1