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