RosettaCodeData/Task/Van-der-Corput-sequence/Lua/van-der-corput-sequence-2.lua

28 lines
731 B
Lua

function vdc( nth, base ) -- returns the numerator & denominator of the sequence element n in base
local p, q, n = 0, 1, nth
while n ~= 0 do
p = p * base
p = p + n % base;
q = q * base;
n = math.floor( n / base )
end
local num, denom = p, q;
-- reduce the numerator and denominator by their gcd
while p ~= 0 do
n = p
p = q % p
q = n
end
num = math.floor( num / q )
denom = math.floor( denom / q )
return num, denom
end
for b = 2,5 do
io.write( "base ", b, ": " )
for n = 0,9 do
local num, denom = vdc( n, b )
io.write( " ", num ) if num ~= 0 then io.write( "/", denom ) end
end
io.write( "\n" )
end