lua中整数的位数之和
我看到了一个与Java和C相关的问题,但我使用的是LUA。答案可能适用于我,但我不理解 有人能告诉我如何得到整数的各个数字之和吗。 比如说lua中整数的位数之和,lua,integer,sum,add,digits,Lua,Integer,Sum,Add,Digits,我看到了一个与Java和C相关的问题,但我使用的是LUA。答案可能适用于我,但我不理解 有人能告诉我如何得到整数的各个数字之和吗。 比如说 a = 275 aSum = 2+7+5 如果您能解释我将如何在LUA中实现这一点,以及为什么代码会这样做,我们将不胜感激。这真是一个简单的函数。使用gmatch会让你到达你需要去的地方 function sumdigits(str) local total = 0 for digit in string.gmatch(str, "%d") do
a = 275
aSum = 2+7+5
如果您能解释我将如何在LUA中实现这一点,以及为什么代码会这样做,我们将不胜感激。这真是一个简单的函数。使用gmatch会让你到达你需要去的地方
function sumdigits(str)
local total = 0
for digit in string.gmatch(str, "%d") do
total = total + digit
end
return total
end
print(sumdigits(1234))
10
基本上,你是在循环整数,然后把它们一个接一个地取出来,把它们加到总数中。“%d”表示只有一个数字,因此string.gmatch(str,“%d”)表示“每次匹配一个数字”。“for”是循环机制,因此对于字符串中的每个数字,它都将添加到总数中。您可能会获得比gmatch(未验证)更好的性能,包括:
您可以使用此功能:
function sumdigits(n)
local sum = 0
while n > 0 do
sum = sum + n%10
n = math.floor(n/10)
end
return sum
end
在每次迭代中,它将n的最后一位数字加到和中,然后从n中减去,直到对所有数字求和为止
aSum=-load(('return'..a):gsub('%d','-%0'))()
使用%d
而不是
%d
才会选择数字。只要sumdights
获得数字输入,你的
也会工作。是的,我只是想说“有一种更容易获得数字的方法,我不记得了。”我可能会在很久以后找到它,但是现在不用担心了。很高兴看到你终于发布了答案而不是评论。@hjpotter92-这不会永远持续下去:-)+1。我不知道为什么人们总是发布那些“将其转换为字符串并分别转换每个数字”的方法;这更有效。
function sumdigits(n)
local sum = 0
while n > 0 do
sum = sum + n%10
n = math.floor(n/10)
end
return sum
end