我有这个简单的 lua 函数,旨在解决连续素数和的问题。素数 41 可以写成六个连续素数之和:
41 = 2 + 3 + 5 + 7 + 11 + 13
这是添加到低于 100 的素数的最长的连续素数之和。这是我的功能:
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]
如您所见,我正在打印,并且值很好。发生什么了?