    1PRINT "sieve89/11a.PrimePlus,  A fast Pr No. Prog in Basic"
    2PRINT "John Sealy, Mathematics Dept., A.T.I, Carrgtn Univ?,  NZ Math Mag."
    3PRINT "BASIC PLUS FOR PDP11."
    4PRINT "bbc Basic V Don.mcdonald@welcom.gen.nz,  29.04.97"
    5now = TIME
    6DIM A%(5460), B%(5460)     :  REM  5458
    7FOR I% = 1 TO 29 : REM 30
    8   IF A%(I%) = 0 THEN
    9   PRINT " ";  I%;
   10      X% = I%*6 - 1
   11      Y% = X%*X%/6
   12      FOR J% = Y%+I%*2 TO 5458 STEP X%  :
   13      A%(J%) = 1 : NEXT J% :
   14      FOR J% = Y% TO 5458 STEP X% :  B%(J%) = 1 : NEXT J%
   15      ENDIF
   16   IF B%(I%) = 0 THEN
   17   PRINT "B";
   18      X% = I%*6 + 1
   19      Y% = X%*X%/6
   20      FOR J% = X%+Y%-I%*2 TO 5458 STEP X%  :
   21REM      IF I% = 30 TH. PRINT ; J%" "; : REM ? BUG
   22        A%(J%) = 1 : NEXT J%
   23      FOR J% = Y% TO 5458 STEP X% :  B%(J%) = 1 : NEXT J%
   24      ENDIF
   25   NEXT I%
   26
   27PRINT ' ; TIME- now " centiseconds. "
   28REPEAT
   29PRINT "Display up to nth prime e.g. p(800) = 6133 Te Aro PO,"
   30INPUT " enter test K% >= 800,  P% >= 32000, FALSE <Return> all, q.uit" t$
   31IF t$ = "" THEN t$ = "FALSE"
   32PRINT t$   "  cont.  <esc> " GET$
   33PRINT "2 / 3 / ";  :  K% = 2
   34FOR I% = 1 TO 5458 : REM 5458
   35   IF A%(I%) = 0 THEN PRINT ; I%*6-1 " ";  : K% +=1
   36   IF B%(I%) = 0 THEN PRINT ; I%*6+1 " ";  : K% +=1
   37   P% = I%*6 + 1
   38   IF EVAL t$  THEN  PRINT ' "test TRUE ("t$") count K% = "; K% : UNTIL FALSE
   39   NEXT I%
   40PRINT "count (all) K% = "; K% :  UNTIL FALSE : STOP
   41END