# A program to find primes Eratosthenes efficient seive # It prints a message if any times tables are still making no difference import math def createlistupto(n): """create a list of numbers from 2 up to the given number""" return list(range(2, n+1)) def seive(numbers,n, MAX): """Seive the n times table out of a list of numbers, but noting when a particular timestable removed no new values from the list""" removed = False for i in range(2, int(MAX/n)+1): if n*i in numbers: numbers.remove(n*i) removed = True if removed == False: print(n, 'no change') return numbers def seiveall(numbers, MAX): """Seive all the timestable numbers out of a list of numbers""" for timestable in range(2, int(math.sqrt(MAX))+1): if timestable in numbers: numbers = seive(numbers,timestable,MAX) return numbers def EratosthenesPrimes(MAX): """primes up to MAX""" numberlist = createlistupto(MAX) return seiveall(numberlist, MAX) print(EratosthenesPrimes(100))