SUB PBMAIN ()
DIM strInput AS STRING
DIM yorn AS STRING
DIM n AS LONG
DIM m AS LONG
DIM lim AS LONG
DIM s AS LONG
DIM startTime AS DOUBLE
DIM endTime AS DOUBLE
DIM nums() AS BYTE
PRINT "This program will calculate primes using a simple algorithm."
INPUT "Enter limit for this search (enter for default): ", strInput
IF strInput = "" THEN strInput = "100000000"
lim = VAL(strInput)
s = SQR(lim)
startTime = TIMER
REDIM nums(lim)
FOR n = 2 TO s
IF nums(n) = 0 THEN
m = n * n
WHILE m <= lim
nums(m) = 1
m += n
WEND
END IF
NEXT
endTime = TIMER
PRINT "It took " + STR$(endTime - startTime) + " seconds to complete."
INPUT "Would you like to display results (Y/N)? ", yorn
PRINT ""
IF yorn = "Y" OR yorn = "y" THEN PRINT "The primes up to " + STR$(lim) + " are:"
m = 0
FOR n = 2 TO lim
IF nums(n) = 0 THEN
IF yorn = "Y" OR yorn = "y" THEN PRINT STR$(n)
m += 1
END IF
NEXT
PRINT "Total primes count = " + STR$(m)
PRINT "Press any key to exit. . . ";
GETKEY
END SUB
PBMAIN
' ==================================================================================================
' OLD POWERBASIC VERSION
' DELETE AFTER THIS LINE IF NOT USING
#COMPILE EXE
#OPTIMIZE CODE ON
#OPTIMIZE SPEED
#DIM ALL
FUNCTION PBMAIN () AS LONG
DIM strInput AS STRING
DIM yorn AS STRING
DIM n AS LONG
DIM m AS LONG
DIM lim AS LONG
DIM s AS LONG
DIM startTime AS DOUBLE
DIM endTime AS DOUBLE
DIM nums() AS BYTE
PRINT "This program will calculate primes using a simple algorithm."
INPUT "Enter limit for this search (enter for default): ", strInput
IF strInput = "" THEN strInput = "100000000"
lim = VAL(strInput)
s = SQR(lim)
startTime = TIMER
REDIM nums(lim)
FOR n = 2 TO s
IF nums(n) = 0 THEN
m = n * n
WHILE m <= lim
nums(m) = 1
m += n
WEND
END IF
NEXT
endTime = TIMER
PRINT "It took" + STR$(endTime - startTime) + " seconds to complete."
INPUT "Would you like to display results (Y/N)? ", yorn
PRINT ""
IF yorn = "Y" OR yorn = "y" THEN PRINT "The primes up to" + STR$(lim) + " are:"
m = 0
FOR n = 2 TO lim
IF nums(n) = 0 THEN
IF yorn = "Y" OR yorn = "y" THEN PRINT STR$(n)
m += 1
END IF
NEXT
PRINT "Total primes count =" + STR$(m)
PRINT "Press any key to exit. . . ";
WAITKEY$
END FUNCTION