====== 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