1 REM Ins{nd av Guido Petz <1098> 1987-03-30 15.49.24 (SEND) 10 ! Guido Petz (1098) 08/193523, 1987 20 ! Primtal f|r ABC800-806 och BASICII-kortet 30 ! Efter Leopold Lundstr|m's "PRIMELVA" f|r ABC80 i ABC-bladet 1986/1 40 POKE -242,102,241 50 OPEN 'v24:vsa29c72.1' AS FILE 2 60 A%=25000% : P%=483% : DIM A%(A%/2%) : DIM P%(P%) 70 B1%=VARPTR(P%(0%))-1% 80 B%=VARPTR(A%(0%)) : B2%=B%-1% : B3%=B1%-B% 90 IF PEEK(-226)=4% B$='9999999' : DIGITS 7 ELSE B$='9999999999999999' 100 POKE 61799%,1%,B3%,SWAP%(B3%),17%,B1%-1%,SWAP%(B1%-1%) 110 POKE 61805%,33%,B1%,SWAP%(B1%),54%,0%,237%,184%,201% 120 POKE 61820%,62%,0%,115%,25%,16%,252%,185%,200%,13%,24%,247% 130 ; CHR$(12) 'V{nta 7 sekunder.....' 140 FOR I%=1% TO 1155% : A%(I%)=I%+I%+1% : NEXT I% 150 FOR J%=1% TO 5% 160 IF A%(J%)=0% 210 170 P%(L%)=A%(J%) : L%=L%+1% 180 FOR K%=J% TO 1155% STEP A%(J%) 190 A%(K%)=0% 200 NEXT K% 210 NEXT J% 220 X%=1% : FOR I%=1% TO 1155% 230 IF A%(I%)=0% 250 240 P%(L%)=A%(I%)-X% : L%=L%+1% : X%=A%(I%) 250 NEXT I% : ; CHR$(12) '227 <= PRIMTAL < ' B$ : ; STRING$(17+LEN(B$),45) 260 [%=0% : INPUT 'Starttal:'N$ : IF LEN(N$)=0% STOP 270 N=VAL(N$) : IF N<227 OR N>VAL(B$) ; 'Utanf|r till}tet talomr}de!' : GOTO 260 280 INPUT 'Sluttal :'N2$; : IF LEN(N2$)=0% N2$=N$ : ; N2$ ELSE ; 290 N2=VAL(N2$) : ; 'Printer(j)'; : GET [$ : ; [$ 300 IF A$='j' [%=-1% : ; #2 'PRIMTAL:' : ; #2 STRING$(7,45) 310 IF N=INT(N/2)*2 THEN N=N+1 320 POKE -14,0,0,0 : A=0 330 Z%=CALL(61799%) 340 M=N+2*A% : Z=SQR(M) : N1=N-1 350 FOR I%=0% TO 3% : P=P%(I%) : GOSUB 400 : NEXT I% : P=1 360 FOR I%=4% TO 483% : P=P+P%(I%) 370 ; CHR$(13%) P; 380 IF P>Z THEN 460 ELSE GOSUB 400 390 NEXT I% : GOTO 360 400 S=((INT(N1/P)+1)*P-N1)/2 410 IF INT(S)<>S S=S+.5 ELSE S=S+P-INT(P/2) 420 IF S>A% RETURN ELSE T%=INT((A%-S)/P)+1% : S%=B2%+S 430 IF T%>1% POKE 61813%,6%,T%,14%,SWAP%(T%),33%,S%,SWAP%(S%) 440 Z%=CALL(61813%,P) : RETURN 450 POKE S%,1% : RETURN 460 ; CHR$(13%); : FOR I%=B% TO B%+A%-1% 470 IF PEEK(I%) 500 ELSE P9=N+2*(I%-B%) 480 ; P9; : A=A+1 : IF [% ; #2 P9; 490 IF P9>=N2 THEN 520 500 NEXT I% : ; 510 N=N+2*A% : GOTO 330 520 A$=RIGHT$(TIME$,12) : ; CHR$(7) : ; ' Primtal:' A : ; 'Tid:' A$ : ; 530 IF [% ; #2 : ; #2 'PRIMTAL:' A : ; #2 'TID: ' A$ 540 GOTO 260