1

我有这个简单的 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]如您所见,我正在打印,并且值很好。发生什么了?

4

1 回答 1

7

如果这是您的确切代码,那么您只是有一个错字。

sumSofar = sumSoFar + a[pos]

f将第一个大写,sumSofar使其与所有其他匹配。

于 2013-08-19T16:59:13.130 回答