我有这个简单的lua函数,旨在解决连续素数和的问题。 素数41可以写成六个连续素数的总和:
41 = 2 + 3 + 5 + 7 + 11 + 13
这是连续素数的最长总和,它增加到低于一百的素数。 这是我的功能:
function numOfConsecPrimes(limit)
a = allPrimes(limit/2)
length = table.getn(a)
sumSoFar = 0 innerSum = 0 finalSum = 0
pos = 1
items = 0 innerItems = 0 finalItems = 0
resetpos = pos
while resetpos < length do
pos = resetpos
resetpos = resetpos + 1
items = 0
sumSoFar = 0
while sumSoFar < limit and pos < length do
if isPrime(sumSoFar) == true then innerSum = sumSoFar innerItems = items end
print(sumSoFar)
sumSofar = sumSoFar + a[pos]
print(a[pos] .."->"..sumSoFar)
pos = pos + 1
items = items + 1
end
if innerItems > finalItems then finalItems = innerItems finalSum = innerSum end
end
end
但出于某种原因,sumSoFar
不会改变。我在添加a[pos]
之前和之后打印它,它始终保持为零。我正如你所见打印a[pos]
并且值很好。那是怎么回事?
答案 0 :(得分:7)
如果这是您的确切代码,那么您只会输入错字。
sumSofar = sumSoFar + a[pos]
将第一个f
中的sumSofar
大写,以便与其他所有内容匹配。