2017-01-30 67 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