-- $Id: sieve.lua,v 1.9 2001/05/06 04:37:45 doug Exp $ -- http://www.bagley.org/~doug/shootout/ -- -- Roberto Ierusalimschy pointed out the for loop is much -- faster for our purposes here than using a while loop. function main(num) local flags = {} for num=num,1,-1 do count = 0 for i=2,8192 do flags[i] = 1 end for i=2,8192 do if flags[i] == 1 then k = 0 for k=i+i, 8192, i do flags[k] = 0 end count = count + 1 end end end end NUM = tonumber((arg and arg[1])) or 1 count = 0 main(NUM) write("Count: ", count, "\n")