diff options
author | Volker Lendecke <vl@samba.org> | 2008-09-19 08:01:23 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-12-17 12:57:18 +0100 |
commit | 390f19b649b85a8f8ab762c6a4e9d1a3d23d3f47 (patch) | |
tree | 9f9506e36222640d23b086d62b32de940c526a98 /source3/lua-5.1.4/test/sieve.lua | |
parent | 081f8883bafc11ca7c08f868ec19f1ea32071837 (diff) | |
download | samba-390f19b649b85a8f8ab762c6a4e9d1a3d23d3f47.tar.gz samba-390f19b649b85a8f8ab762c6a4e9d1a3d23d3f47.tar.bz2 samba-390f19b649b85a8f8ab762c6a4e9d1a3d23d3f47.zip |
Add the Lua distibution from http://www.lua.org/ftp/lua-5.1.4.tar.gz
Available under the MIT license.
Adding it to see how the build farm likes it. They claim to be 100% pure
ANSI C and compile everywhere. Lets see. If it breaks badly, we can remove
it again.
Diffstat (limited to 'source3/lua-5.1.4/test/sieve.lua')
-rw-r--r-- | source3/lua-5.1.4/test/sieve.lua | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/source3/lua-5.1.4/test/sieve.lua b/source3/lua-5.1.4/test/sieve.lua new file mode 100644 index 0000000000..0871bb2125 --- /dev/null +++ b/source3/lua-5.1.4/test/sieve.lua @@ -0,0 +1,29 @@ +-- the sieve of of Eratosthenes programmed with coroutines +-- typical usage: lua -e N=1000 sieve.lua | column + +-- generate all the numbers from 2 to n +function gen (n) + return coroutine.wrap(function () + for i=2,n do coroutine.yield(i) end + end) +end + +-- filter the numbers generated by `g', removing multiples of `p' +function filter (p, g) + return coroutine.wrap(function () + while 1 do + local n = g() + if n == nil then return end + if math.mod(n, p) ~= 0 then coroutine.yield(n) end + end + end) +end + +N=N or 1000 -- from command line +x = gen(N) -- generate primes up to N +while 1 do + local n = x() -- pick a number until done + if n == nil then break end + print(n) -- must be a prime number + x = filter(n, x) -- now remove its multiples +end |