Erastosthenes Sieve算法的实现

时间:2016-06-10 18:37:58

标签: python algorithm

我是编程和python的新手,希望能找到一个整数的素数。我已经阅读了一些实施Eratosthene筛子的方法,但大多数似乎有点过于参与(代码太多)。这是我的方法,我需要帮助的部分在#HELP评论下面:

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)

如何摆脱重复?

1 个答案:

答案 0 :(得分: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上有 2 循环,在其中删除该列表中的元素,这可能会给您带来麻烦。