# Question Sum of 1 to 100 except the prime numbers. ### Method 1: Check if the number from 1 to 100 is a prime number, and sum them up if they are not a prime number. A simple and intuitive answer but too slow: ``` def isPrime(num): if num > 2: for i in range(2,num): if (num % i) == 0: return False return True def sum(tail): s = 1 for n in range(1, tail+1): if not isPrime(n): s = s + n return s print(sum(100)) ``` ### Method 2: To reduce the time consuming (Time Complexity), I found an algorithm called "Sieve of Eratosthenes" which is the most common algorithm and more effective way for finding all prime numbers upto given limit. ``` p = 2 n = 20 primes = list(range(p,n+1)) # Create a list with given all numbers. while (p * p <= n): # Start filtering the multiples iteratively. for i in range(p*2, n + 1, p): if i in primes: primes.remove(i) # remove non-primes in the list p += 1 s = (1+n)*n//2 # Sum of 1~n print(s-sum(primes)) # answer ``` ### Reference: https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes https://www.geeksforgeeks.org/python-program-for-sieve-of-eratosthenes/