>>create cursor prime ( primenumber i ) >>insert into prime value ( 3 ) >> >>MaxRange = 100000 >> >>t = seconds() >>for i = 5 to MaxRange step 2 >> if IsPrime(i) >> insert into prime value ( i ) >> endif >>next >>? seconds() - t >> >>func isprime >> lpar i >> local n >> scan >> n = prime.primenumber >> if int( i / n ) = i / n >> return .f. >> endif >> if n^2 > i >> exit >> endif >> endscan >> return .t. >>>
>CREATE CURSOR Prime (primenumber i) >INSERT INTO Prime VALUES (3) > >FOR I = 5 TO 100000 STEP 2 > nSQRT = SQRT(i) > GO TOP > LOCATE WHILE prime.primenumber =< nSQRT FOR I % prime.primenumber = 0 > IF !FOUND() > INSERT INTO Prime VALUES ( i ) > ENDIF >ENDFOR >>
>SET TALK OFF >SELECT Numbers >GO BOTTOM >MaxRange = Numbers.Num > >** Generate Prime numbers > >CREATE CURSOR Prime (primenumber i) >INSERT INTO Prime VALUES (3) > >FOR I = 5 TO MaxRange STEP 2 > nSQRT = SQRT(i) > GO TOP > LOCATE WHILE prime.primenumber =< nSQRT FOR I % prime.primenumber = 0 > IF !FOUND() > INSERT INTO Prime VALUES ( i ) > ENDIF >ENDFOR >INDEX ON PrimeNumber TAG Prime > >** Determine the missing primenumbers in the gaps in the Numtable > >CREATE CURSOR Invert (un I) >SELECT Numbers >GO TOP > >nLow = Num >SCAN > FOR nT = nLow+1 TO Num-1 > IF KEYMATCH(nT,1,"Prime") > INSERT INTO Invert VALUES (nT) > ENDIF > ENDFOR > nLow=Num >ENDSCAN >>