링크 : 5291. [파이썬 S/W 문제해결 최적화] 7일차 - 소수의 합
def primeNumbers():
seive = [True] * upper # 초기화
seive[0] = seive[1] = False
for i in range(2, int(upper * 0.5)):
if seive[i]:
for j in range(i + i, upper, i):
seive[j] = False
return seive
for tc in range(1, int(input()) + 1):
lower, upper = map(int, input().split())
seive = primeNumbers()
answer = 0
for i in range(lower + 1, len(seive)):
if seive[i]:
answer += i
print(f'#{tc} {answer}')
seive
배열을 True
값으로 초기화한다. 배열의 인덱스가 True
이면 해당 인덱스 숫자가 소수임을 의미한다. False
로 초기화한다. upper
의 제곱근까지에 해당하는 숫자들의 배수를 지운다. seive[i]
가 True
면 소수라 여기며 i
씩 증가해 배수를 False
로 만든다.seive[lower < 인덱스 < upper]
에서 True
인 숫자들을 합한다.