是否可以在python中嵌套for循环?

时间:2017-01-30 06:12:38

标签: loops iteration

我正在研究一个找到素数的程序,以便了解for循环。我有一些可以用来检查%== 0的素数列表。我试过这个

primes = [1, 3, 5, 7, 9, 11, 13, 17, 19, 29]
hold_the_primes = []
for x in range(29,841):
    for y in primes:
        if x % y == 0:
            pass
        else:
            hold_the_primes.append(x)
primes.extend(hold_the_primes)
for x in primes:
    print x

但它没有返回任何内容,此时终端卡住了。我该怎么做才能做到这一点?

1 个答案:

答案 0 :(得分:1)

python中可以嵌套循环。问题在于我相信你的代码。

以下是一些提示:

  • 1不是素数,您的列表应以2开头。你也错过了23。
  • 看起来你假设一个数字不能被素数整除,它是素数。我不认为这是正确的检查。例如,如果x = 29,则在y = 3,5,7,9,11,13,17和19时将调用hold_the_primes.append(x)
  • 如果除了1和
  • 之外没有其他因素,则数字为素数
  • (编辑)如果您所做的只是将第二个for循环移动到一个函数中,我认为您将看到您的代码没有按预期运行

这是一个我认为可行的例子:

primes = [2, 3, 5, 7, 9, 11, 13, 17, 19, 23, 29]
hold_the_primes = []

def isPrime(n):
    temp = 2;
    while temp*temp <= n: #temp < math.sqrt(n):
        if n % temp == 0:
            return False
        temp += 1
    return True

for x in range(30,841):
    if isPrime(x):
        hold_the_primes.append(x)


primes.extend(hold_the_primes);
for x in primes:
    print x