-1

このプログラムで何が起こっているのか本当に理解できません。

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 20, 22, 23, 25, 26, 28, 29, 31, 32, 34, 37, 38, 41, 43, 44, 46, 47, 49]

ヘルプ?

def primeTest(n):
     if n < 2:
        return False
     if n == 2:
        return True
     for x in range(3, int(n ** 0.5 + 0.5), 2):
        if n % x == 0:
            return False
     return True
def primeList(largestValue):
    primes = []
        for a in range(2, largestValue):
            if primeTest(a) == True:
                primes.append(a)
    return primes     
print(primeList(101))

primeTest入力print(primeTest(10))すると が返されるため、これが最初の関数であることに気付きましたTrue

4

2 に答える 2

0

最初に、内部関数と外部関数を切り替えてから、プライム テストを正しく行い、最後に関数ではなくリストを返す必要があります。

def primeList(largestValue):
    def isPrime(n):
        if n < 2: return False
        if n == 2: return True
        if n & 1 == 0: return False
        for x in range(3, int(n ** 0.5)+1, 2):
            if n % x == 0:
                return False
        return True


    primes = []
    for a in range(2, largestValue):
        if isPrime(a):
            primes.append(a)
    return primes

print(primeList(101))
于 2013-03-02T13:40:48.783 に答える
0

飛び出すいくつかの問題を次に示します。

1) で割り切れるかどうかを確認することはありません2

2)primeList()返すべきではprimesありませんprimeList

3) の上限range(3, int(n ** 0.5 + 0.5), 2)が 1 ずれています。たとえば、n==9by の割り切れる可能性3はチェックされません。

これらを修正すると、コードは期待どおりに機能します。

于 2013-03-02T13:32:47.203 に答える