enigbe
enigbe

Reputation: 1

Implementing the Algorithm for Erastosthenes Sieve

I'm new to programming and python and would like some help with finding the primality of an integer. I've read some approaches to implementing Eratosthene's sieve but most seem a bit too involved (too much code). Here is my approach and the part where I need help is below the #HELP comment:

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)

How do I get rid of the repetition?

Upvotes: 0

Views: 61

Answers (1)

Scott Hunter
Scott Hunter

Reputation: 49873

To answer your direct question:

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)

(I'm assuming that you meant for fourth_element to be integer_list[3].)

Note, however, that you now have 2 loops over integer_list, inside of which you removing elements from that list, which will likely cause you trouble.

Upvotes: 1

Related Questions