10. Summation of primes

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

  • 2,000,000 이하의 모든 소수의 합을 구하는 문제이다!
  • 앞에서 사용했던 소수구하는 함수를 재활용하자.
def is_prime(x):
    if x <=3:
        if x<=1:
            return False
        return True
    if not x%2 or not x%3:
        return False
    for i in range(5, int(x**0.5)+1, 6):
        if not x%i or not x%(i+2):
            return False
    return True

def euler010a(number=2000000):
    results = []

    for n in range(2, number+2):
        if is_prime(n):
            results.append(n)
    print(sum(results))
  • 이 방식은 함수를 무지막지하게 불러오기때문에 많이 느리다.
def euler010(number=2000000):
    prime = [False for n in range(2,number + 1)]
    sumOfNum = 0
    for n in range(2, len(prime)):
        if (prime[n] == False):
            sumOfNum += n
            for nn in range(n, len(prime), n):
                prime[nn] = True
    print(sumOfNum)