home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / euphoria / sieve.bas < prev    next >
BASIC Source File  |  1994-03-09  |  940b  |  52 lines

  1. ' PRIME SIEVE BENCHMARK
  2.  
  3. DEFINT A-Z  'only 16-bit integers, but runs faster than DEFLNG A-Z
  4.  
  5. DECLARE FUNCTION sieve()
  6.  
  7. 'Constants
  8. CONST BATCH = 5
  9. CONST BENCHTIME = 15
  10.  
  11. CONST TRUE = -1
  12. CONST FALSE = NOT TRUE
  13. CONST SIZE = 8191
  14.  
  15. 'Global Variables
  16. DIM SHARED flags(SIZE)
  17.  
  18. PRINT "prime sieve benchmark ..."
  19.  
  20. cycles& = 0
  21. t# = TIMER
  22. WHILE TIMER < t# + BENCHTIME
  23.     FOR b = 1 TO BATCH
  24.         IF sieve <> 1899 THEN
  25.         PRINT "whoops"
  26.     END IF
  27.     NEXT b
  28.     cycles& = cycles& + BATCH
  29. WEND
  30. t# = TIMER - t#
  31. PRINT USING "###.## sieves per second"; cycles& / t#
  32.  
  33.  
  34. FUNCTION sieve
  35.     count = 0
  36.     FOR f = 1 TO SIZE
  37.         flags(f) = TRUE
  38.     NEXT f
  39.     FOR i = 1 TO SIZE
  40.         IF flags(i) THEN
  41.             prime = i + i + 1
  42.             'PRINT prime;
  43.         FOR k = i + prime TO SIZE STEP prime
  44.         flags(k) = FALSE
  45.         NEXT k
  46.         count = count + 1
  47.     END IF
  48.     NEXT i
  49.     sieve = count
  50. END FUNCTION
  51.  
  52.