RosettaCodeData/Task/Munchausen-numbers/Lua/munchausen-numbers.lua
2023-07-01 13:44:08 -04:00

24 lines
604 B
Lua

function isMunchausen (n)
local sum, nStr, digit = 0, tostring(n)
for pos = 1, #nStr do
digit = tonumber(nStr:sub(pos, pos))
sum = sum + digit ^ digit
end
return sum == n
end
-- alternative, faster version based on the C version,
-- avoiding string manipulation, for Lua 5.3 or higher
local function isMunchausen (n)
local sum, digit, acc = 0, 0, n
while acc > 0 do
digit = acc % 10.0
sum = sum + digit ^ digit
acc = acc // 10 -- integer div
end
return sum == n
end
for i = 1, 5000 do
if isMunchausen(i) then print(i) end
end