2015-05-11 41 views
0

我知道這個問題已經以各種形式回答。然而,我試圖讓它按我寫它的方式工作,所以當我解決編程問題時,我可以看到我做錯了什麼。我試圖做一個函數打印/返回範圍內的所有質數。然而我寫的程序不會打印任何東西。我試圖製作流程圖並評論一切。這對我有意義,但不會工作。任何建議表示讚賞!Python素數不會返回

def isPrime (n):      ## we define a function 
    primeList = [2, 3]     ## 2 is the only even prime number 
    i = 4 
    while 3<i<n:      # i is assigned to numbers 3 to n 
     if i%2 == 1:     # if odd do the following 
      if i%3 != 0:    
       primeList.append(i) # add to prime list 
      else: 
       i%2 == False 
     else: 
      i = i + 1     # since i%2 == 0 we restart loop 
    return primeList 
+0

DEF isPrime(N):##,我們定義一個函數 primeList = [2,3] ## 2是唯一的偶數素數 i = 4的 而3

+1

目前還不清楚你在這裏實現的算法是什麼。如果數字可以被2或3整除,你似乎可以算作一個「主要」的數字。那麼數字25呢?另外,語句'i%2 == False'不會做任何事情(並且不清楚你打算做什麼)。最後,在奇數的情況下,你不能增加'i'。 –

回答

1

你錯過一個相當必要i += 1如果i % 2 == 1

試試這樣說:

def isPrime (n):      ## we define a function 
    primeList = [2, 3]     ## 2 is the only even prime number 
    i = 4 
    while 3<i<n:      # i is assigned to numbers 3 to n 
     if i%2 == 1:     # if odd do the following 
      if i%3 != 0:    
       primeList.append(i) # add to prime list 
      else: 
       i%2 == False 

     i = i + 1     # since i%2 == 0 we restart loop 
    return primeList 

而且,記住這個功能實際上並沒有產生質數的列表。

+0

嘿,謝謝你,這幫助我獲得了工作的功能。現在我明白了爲什麼它不生成素數列表。 –

0

功能應該做的只有一件事,所以我會做兩個功能:

  • def get_primes_in_range(start, stop):
  • def is_prime(number):

功能名稱應該確切地告訴你它做什麼。在您的代碼中,函數名稱錯誤。它被稱爲isPrime,但它不檢查數字是否爲素數,它將返回素數列表。

我們的職能應該是這樣的:

def get_primes_in_range(start, stop): 
    list_of_primes = [] 
    for i in xrange(start, stop): 
    if is_prime(i): 
     list_of_primes.append(i) 
    return list_of_primes 

def is_prime(number): 
    for index in range(1, number): 
    if number % index == 0 and index != 1: 
     return False 
    return True 

這不是超級快,但它做的工作。