-- The Computer Language Shootout -- http://shootout.alioth.debian.org/ -- contributed by Isaac Gouy -- modified by Mike Pall local function nsieve(m,isPrime) for i=2,m do isPrime[i] = true end local count = 0 for i=2,m do if isPrime[i] then for k=i+i, m, i do -- if isPrime[k] then isPrime[k] = false end isPrime[k] = false end count = count + 1 end end return count end local n = tonumber(arg and arg[1]) or 1 if n < 2 then n = 2 end local flags = {} local m = (2^n)*10000 io.write( string.format("Primes up to %8d %8d", m, nsieve(m,flags)), "\n") m = (2^(n-1))*10000 io.write( string.format("Primes up to %8d %8d", m, nsieve(m,flags)), "\n") m = (2^(n-2))*10000 io.write( string.format("Primes up to %8d %8d", m, nsieve(m,flags)), "\n")