1

連続素数の問題を解決するために設計されたこの単純な lua 関数があります。素数 41 は、6 つの連続する素数の合計として記述できます。

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 に答える