lua中整数的位数之和

Mik*_*994 5 lua integer sum add digits

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

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

a = 275
aSum = 2+7+5
Run Code Online (Sandbox Code Playgroud)

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

小智 6

您可以使用此功能:

function sumdigits(n)
   local sum = 0
   while n > 0 do
      sum = sum + n%10
      n = math.floor(n/10)
   end
   return sum
end
Run Code Online (Sandbox Code Playgroud)

在每次迭代中,它将n的最后一个数字加到总和,然后从n中减去,直到将所有数字相加。


Jos*_*osh 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
Run Code Online (Sandbox Code Playgroud)

基本上,您正在循环遍历整数并将它们一一取出以将它们添加到总数中。“%d”仅表示一位数字,因此 string.gmatch(str, "%d") 表示“每次匹配一位数字”。“for”是循环机制,因此对于字符串中的每个数字,它都会添加到总数中。

  • 使用“%d”而不是“.”? (3认同)