如果所有语句都起作用,该如何处理?欧拉7

我在看下面的代码,我似乎无法通过if all语句来了解第6行。 有人可以解释它在做什么,以及当列表为空时在第一次迭代中会发生什么。这是来自欧拉7

def main():
    number_prime_to_find = 1001
    x = 2
    list_of_primes = []
    while (len(list_of_primes) < number_prime_to_find):
        if all(x % prime for prime in list_of_primes):
            list_of_primes.append(x)
评论
  • dsed
    dsed 回复

    块:

    if all(x % prime for prime in list_of_primes):
        list_of_primes.append(x)
    

    实际上与以下内容相同:

    notAFactor = True
    for prime in list_of_primes:
        if x % prime:
            notAFactor = False
            break
    if notAFactor:
        list_of_primes.append(x)
    

    换句话说,它将检查列表中的每个单个值,以查看它是否是候选素数的因素。如果没有,则候选素数是实际素数,因此将其添加到列表中。