사이트 이름 - 문제 10번
10 이하의 소수를 모두 더하면 2 + 3 + 5 + 7 = 17 이 됩니다.
이백만(2,000,000) 이하 소수의 합은 얼마입니까?
해결 방법
이것도 기존에 사용했던 소수 구하는 알고리즘을 이용하면 되겠다.
def is_prime(number):
if number < 2:
return False
if number == 2:
return True
if number % 2 == 0:
return False
for i in range(3, int(number ** 0.5) + 1):
if number % i == 0:
return False
return True
sum = 2
for i in range(3, 2000001):
if is_prime(i):
sum += i
print(sum)
해설
이번 문제는 에라토스테네스의 체를 이용해 구하는것이라고 한다.
다음에 시간을 내서 에라토스테네스의 체를 한 번 구현해 봐야겠다.
'프로그래밍 > 알고리즘' 카테고리의 다른 글
500개 이상의 약수를 갖는 가장 작은 삼각수는? (0) | 2021.02.03 |
---|---|
20×20 격자에서 연속된 네 수의 곱 중 최댓값 (0) | 2021.02.02 |
최대공약수, 최소공배수 (0) | 2021.01.31 |
약수 구하기 (0) | 2021.01.30 |
a + b + c = 1000 이 되는 피타고라스 수 (0) | 2021.01.29 |