gpt4 book ai didi

lua - 一个数中的质数之和 - Lua

转载 作者:行者123 更新时间:2023-12-04 22:04:14 25 4
gpt4 key购买 nike

我正在尝试计算给定数字中素数的总和。例如,对于数字 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 不是素数。这里有什么问题?

最佳答案

string.gmatch 返回一个字符串,需要先转为数字再进行计算

顺便说一句,您在循环中进行了两次素数验证。

这是一个固定版本(按预期返回 10):

...

function sumOfPrimes(num)
local sum = 0
for digit in string.gmatch(num, "%d") do
digit = tonumber(digit) --needed conversion
local prime_digit = isPrime(digit)
if prime_digit then
sum = sum + digit
end
end
return sum
end

关于lua - 一个数中的质数之和 - Lua,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27278846/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com