lua中整数的位数之和

时间:2014-03-04 19:11:30

标签: lua integer sum add digits

我看到了一个与Java和C相关的问题,但我使用的是LUA。答案可能适用于我,但我不理解它们。

有人可以告诉我如何获得整数的各个数字的总和。 例如。

a = 275
aSum = 2+7+5

如果你能解释我将如何在LUA中实现这一点以及为什么代码能够做到这一点,那将非常感激。

4 个答案:

答案 0 :(得分:4)

真的是一个简单的功能。使用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”是循环机制,因此对于字符串中的每个数字,它将添加到总数中。

答案 1 :(得分:4)

您可以使用此功能:

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中删除它,直到它对所有数字求和。

答案 2 :(得分:2)

aSum = -load(('return'..a):gsub('%d','-%0'))()

答案 3 :(得分:1)

您可能会获得比gmatch(未经验证)更好的性能:

function sumdigits(str)
  local total = 0
  for i=1,#str do 
     total = total + tonumber(string.sub(str, i,i))
  end
  return total
end
print(sumdigits('1234'))
10