2017-01-30 65 views
0

我正在研究一个发现素数的程序,以了解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 

但它没有返回值和终端卡在这一点上。我该怎么做才能做到这一点?

+0

我已经想通了。我只是定义了一个名为primetest的函数,它包含第二个for循环。 –

+0

你是什么意思“终端卡住”?但要回答你的问题,是嵌套for循环是可能的。代码中的逻辑关闭,但在语法上,它是可以的,并在我的终端中运行并打印某些内容。 –

回答

1

在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