10 REM > Primes 20 REM Various Prime Number Programs 30 REM Header by J.G.Harston W79 40 : 50 ONERROR REPORT:PRINT'"Press a key";GET:RUN 60 MODE7:PRINTSPC7"Prime Number Generation" 70 PRINT'"Press a key:"' 80 PRINT"1: R.Harker's original. Tests all"'SPC4"numbers with all numbers" 90 PRINT"2: Peter Davy's improvement. Tests and"'SPC4"uses only odd numbers up to SQR(x)" 100 PRINT"3: J.G.Harston's improvement. Only uses"SPC4"6n-1, 6n+1 up to SQR(x)" 110 PRINT"4: J.G.Harston's fast integer primes" 120 PRINT"5: J.G.Harston's quadratic integer"'SPC4"primes using y=x^2+x+41" 130 PRINT"6: J.G.Harston's IsPrime function" 140 PRINT'"0: Exit" 150 REPEATA$=GET$:UNTILINSTR("0123456",A$):IFA$="0":END 160 A$="Primes"+A$:PRINT'A$; 170 A%=PAGE:REPEAT:A%=A%+4+LEN$A%:UNTIL(INSTR($A%,CHR$&F4)>0 AND INSTR($A%,A$)>0) OR A%>TOP:IFA%>TOP:END 180 Line%=256*A%?-3+A%?-2:PRINTLine%,~Line%:GOTOLine% 190 : 200 DEFPROCSplit:S%=0:A$="":A%=PAGE+4+LEN$(PAGE+4):REPEAT 210 REPEATA%=A%+4+LEN$A% 220 UNTIL(INSTR($A%,CHR$&F4)>0 AND INSTR($A%,">")>1) OR A%>TOP 230 IFS% AND A$<>"":M%=A%?-3:A%?-3=&FF:OSCLI"SAVE "+A$+" "+STR$~S%+" "+STR$~(A%-2)+" FFFF0000 FFFFFB00":A%?-3=M% 240 S%=A%-4:A$=MID$($A%,1+INSTR($A%,">")):UNTILA%>TOP:END 250 : 260 A%=0:*KEY 0 A%=A%+1:OS."LOAD Primes"+STR$(A%)+" "+STR$~(TOP-2):END|MREN.|M 270 : 280 : 290 : 300 REM > Primes1 310 REM D6E (R. Harker)'s original version 320 MODE0 330 place=1 340 divisable=0 350 number=0 360 T%=TIME:REPEAT 370 FOR divisable=1 TO number 380 IF (number MOD divisable)=0 THEN a=a+1 390 IF a>2 THEN divisable=number 400 IF (number MOD 2=0 AND number>2) THEN divisable=number 410 NEXT divisable 420 IF a=2 THEN PRINT number;" Is prime number ";place;" after ";(TIME-T%)/100;" secs" 430 IF a=2 THEN place=place+1 440 a=0 450 number=number+1 460 UNTIL FALSE 470 : 480 : 490 : 500 REM > Primes2 510 REM K2K (Peter Davy)'s modification of 520 REM D6E (R. Harker)'s Prime Number program 530 MODE0 540 PRINT 2;" is prime number ";1:PRINT 3;" is prime number ";2 550 number%=5 560 try%=1 570 order%=2 580 T%=TIME:REPEAT 590 REPEAT 600 try%=try%+2 610 IF (number% MOD try%)=0 THEN factorfound=TRUE ELSE factorfound=FALSE 620 UNTIL factorfound OR try%>SQR(number%) 630 IF NOT factorfound AND try%>SQR(number%) THEN order%=order%+1:PRINT number%;" is prime number ";order%;" after ";(TIME-T%)/100;" secs" 640 number%=number%+2:try%=1 650 UNTIL FALSE 660 : 670 : 680 : 690 : 700 REM > Primes3 710 MODE0 720 REM W79 (J.G.Harston)'s modification to 730 REM K2K (Peter Davy)'s modification to 740 REM D6E (R. Harker)'s Primes program 750 : 760 PRINT 2;" is prime number ";1:PRINT 3;" is prime number ";2 770 number%=5:number_inc%=2 780 order%=2 790 T%=TIME:REPEAT 800 try%=1:try_inc%=4 810 factorfound=(number% MOD 2)=0 OR (number% MOD 3)=0 820 IF NOT factorfound THEN REPEAT:try%=try%+try_inc%:try_inc%=6-try_inc%:factorfound=(number% MOD try%)=0:UNTIL factorfound OR try%>SQR(number%) 830 IF NOT (factorfound AND try%<=SQR(number%)) order%=order%+1:PRINT number%;" is prime number ";order%;" after ";(TIME-T%)/100;" secs" 840 number%=number%+number_inc%:number_inc%=6-number_inc% 850 UNTIL FALSE 860 : 870 : 880 : 890 : 900 REM > Primes4 910 REM 21-09-96 JGH: Fast 6n-1, 6n+1 prime lister 920 : 930 MODE128:PRINT2;" is prime number 1":PRINT3;" is prime number 2" 940 N%=5:I%=2:O%=2:T%=TIME:REPEAT 950 D%=1:A%=4:F%=FALSE:IF(N%MOD3):REPEATD%=D%+A%:A%=6-A%:F%=(N%MODD%)=0:UNTILF% OR D%>=SQRN% 960 IFNOT(F% AND D%<=SQRN%):O%=O%+1:PRINTN%;" is prime number ";O%;" after ";(TIME-T%)/100;" secs" 970 N%=N%+I%:I%=6-I%:UNTILFALSE 980 : 990 : 1000 REM > Primes5 1010 REM 19-09-96 JGH: Fast quadratic combination 1020 : 1030 MODE128:O%=3 1040 PRINT2;" is prime 1":PRINT3;" is prime 2" 1050 N%=5:I%=2:O%=2:T%=TIME:REPEAT 1060 F%=TRUE:IFN%>42 AND N%<1602:N=(SQR(4*N%-163)-1)/2:F%=N<>INTN 1070 F%=F%OR((N%MOD3)=0):D%=1:J%=4:IFF%:REPEAT D%=D%+J%:J%=6-J%:F%=(N% MOD D%)=0:UNTILF% OR D%>=SQR(N%) 1080 IFNOT(F% AND D%<=SQR(N%)):O%=O%+1:PRINTN%;" is prime ";O%;" after ";(TIME-T%)/100;" secs" 1090 N%=N%+I%:I%=6-I%:UNTILFALSE 1100 : 1110 : 1120 : 1130 : 1140 : 1150 REM > Primes6 1160 REM 21-09-96 JGH: Function to test for primeness 1170 : 1180 MODE0:N%=5:I%=2:O%=2:T%=TIME:REPEAT 1190 IFFNIsPrime(N%):O%=O%+1:PRINTN%;" is prime ";O%;" after ";(TIME-T%)/100;" secs" 1200 N%=N%+I%:I%=6-I%:UNTILFALSE 1210 : 1220 DEFFNIsPrime(N%):LOCAL N,D%,K%,F%:IF(N%MOD2)=0 OR (N%MOD3)=0:=FALSE 1230 IFN%>42 AND N%<1602:N=(SQR(4*N%-163)-1)/2:IFN=INTN:=TRUE 1240 D%=1:J%=4:REPEAT D%=D%+J%:J%=6-J%:F%=(N% MOD D%)=0:UNTILF% OR D%>=SQR(N%):=NOT(F% AND D%<=SQR(N%)) 1250 : 1260 :