54 lines
1.7 KiB
Lua
54 lines
1.7 KiB
Lua
function makeInterval(s,e,p)
|
|
return {start=s, end_=e, print_=p}
|
|
end
|
|
|
|
function main()
|
|
local intervals = {
|
|
makeInterval( 2, 1000, true),
|
|
makeInterval(1000, 4000, true),
|
|
makeInterval( 2, 10000, false),
|
|
makeInterval( 2, 1000000, false),
|
|
makeInterval( 2, 10000000, false),
|
|
makeInterval( 2, 100000000, false),
|
|
makeInterval( 2, 1000000000, false)
|
|
}
|
|
for _,intv in pairs(intervals) do
|
|
if intv.start == 2 then
|
|
print("eban numbers up to and including " .. intv.end_ .. ":")
|
|
else
|
|
print("eban numbers between " .. intv.start .. " and " .. intv.end_ .. " (inclusive)")
|
|
end
|
|
|
|
local count = 0
|
|
for i=intv.start,intv.end_,2 do
|
|
local b = math.floor(i / 1000000000)
|
|
local r = i % 1000000000
|
|
local m = math.floor(r / 1000000)
|
|
r = i % 1000000
|
|
local t = math.floor(r / 1000)
|
|
r = r % 1000
|
|
if m >= 30 and m <= 66 then m = m % 10 end
|
|
if t >= 30 and t <= 66 then t = t % 10 end
|
|
if r >= 30 and r <= 66 then r = r % 10 end
|
|
if b == 0 or b == 2 or b == 4 or b == 6 then
|
|
if m == 0 or m == 2 or m == 4 or m == 6 then
|
|
if t == 0 or t == 2 or t == 4 or t == 6 then
|
|
if r == 0 or r == 2 or r == 4 or r == 6 then
|
|
if intv.print_ then io.write(i .. " ") end
|
|
count = count + 1
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if intv.print_ then
|
|
print()
|
|
end
|
|
print("count = " .. count)
|
|
print()
|
|
end
|
|
end
|
|
|
|
main()
|