在python中嵌套循环可能吗?
问题描述:
我正在研究一个发现素数的程序,以了解for循环。我有一些素数可用于检查%== 0,名单我已经试过这在python中嵌套循环可能吗?
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
但它没有返回值和终端卡在这一点上。我该怎么做才能做到这一点?
答
在python中可以嵌套循环。问题在于我相信你的代码。
这里有一些指针:
- 1不是素数,你的清单应以2而不是开始。你还缺少23
- 它看起来像我们假定你是某个数字是不是均匀的素数整除,这是素数。我不认为这是正确的检查。举例来说,如果x = 29,
hold_the_primes.append(x)
将被称为为当y = 3,5,7,9,11,13,17,和19 - 甲数是素数,如果它有,除了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
我已经想通了。我只是定义了一个名为primetest的函数,它包含第二个for循环。 –
你是什么意思“终端卡住”?但要回答你的问题,是嵌套for循环是可能的。代码中的逻辑关闭,但在语法上,它是可以的,并在我的终端中运行并打印某些内容。 –