# A program to find primes using a simple seive # It prints messages to show which times tables are 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 seive2(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 seiveall2(numbers, MAX): """Seive all the timestable numbers out of a list of numbers""" for timestable in range(2, MAX): numbers = seive2(numbers,timestable,MAX) return numbers def primes2(MAX): """primes up to MAX""" numberlist = createlistupto(MAX) return seiveall2(numberlist, MAX) print(primes2(100))