我想计算给定数字中所有质数的和。例如,对于数字123456,结果将为10,因为2 + 3 + 5 = 10。
我尝试使用Lua编写代码来实现这一点,但遇到了一些问题。
首先,这是代码:
function isPrime(num)
if(num == 1 or (num ~= 2 and num%2 == 0)) then
return false
end
for i=3, math.sqrt(num), 2 do
if(num%i == 0) then
return false
end
end
return true
end
function sumOfPrimes(num)
local sum = 0
for digit in string.gmatch(num,"%d") do
local prime = isPrime(digit)
if(isPrime(digit)) then
sum = sum + digit
end
print(digit)
end
return sum
end
function main()
print(sumOfPrimes(123456))
end
main()
它返回的是9而不是10。我还注意到它也将1加入了总和中,但1不是质数。这里有什么问题?