2016-06-10 57 views
0

我是新來編程和python,並希望找到一個整數的素性一些幫助。我已經閱讀了一些實現Eratosthene篩選的方法,但大部分似乎都涉及太多(代碼太多)。這裏是我的方法,我需要幫助的部分在#HELP下面:實現Erastosthenes篩選算法

def prime_number(an_integer): 
    if (an_integer <= 1): 
     return False 
    else: 
     integer_list = list(range(2, an_integer +1)) 

     #HELP 
     first_element = integer_list[0] 
     for each_integer in integer_list: 
      if (each_integer % first_element == 0) and (each_integer != first_element): 
       integer_list.remove(each_integer) 

     second_element = integer_list[1] 
     for each_integer in integer_list: 
      if (each_integer % second_element == 0) and (each_integer != second_element): 
       integer_list.remove(each_integer) 

     third_element = integer_list[2] 
     for each_integer in integer_list: 
      if (each_integer % third_element == 0) and (each_integer != third_element): 
       integer_list.remove(each_integer) 

     fourth_element = integer_list[0] 
     for each_integer in integer_list: 
      if (each_integer % fourth_element == 0) and (each_integer != fourth_element): 
       integer_list.remove(each_integer) 


     print (integer_list) 

我該如何擺脫重複?

+0

如果您需要生成一個範圍內的所有素數,那麼篩是一個好方法。如果你只想要函數檢查'an_integer'的素數,就不需要使用篩子。您只需要一個循環,您可以檢查「an_integer」是否可以被其他整數整除。 (我試圖不給太多:-))如果你願意的話,你可以使用類似於篩子的東西,但是不需要存儲篩子,因爲你只對其中的一個值感興趣。 – m69

回答

1

要回答你直接問:

for element in integer_list: 
    for each_integer in integer_list: 
     if (each_integer % element == 0) and (each_integer != element): 
      integer_list.remove(each_integer) 

(我假設你意味着fourth_elementinteger_list[3]。)

但是請注意,你現在有環比integer_list ,其中你從該列表中刪除元素,這可能會給你帶來麻煩。

+0

斯科特亨特,你好,他遲到的答覆道歉。我很感謝您的迴應,並幫助清理我的代碼。它工作正常。 –