-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

以下是一些跳出来的问题:

1) 你从不检查可除性2

2)primeList()应该返回primes而不是primeList

3) in 的上界减range(3, int(n ** 0.5 + 0.5), 2)一。例如,对于n==9整除性3永远不会检查。

一旦我修复了这些,代码就会按预期工作。

于 2013-03-02T13:32:47.203 回答
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 回答