practivceAlgorithm/백준

[백준][Python] 2581 소수

findTheValue 2021. 8. 29. 10:38

에라토스테네스의 seive 써서 구했다. 모든 숫자를 최댓 범위의 제곱근 범위까지 돌며 그 배수를 False로 바꿔주는게 포인트. i는 False로 바꾸지 않는다(소수이기 때문) i+i부터 바꾼다.

 

import sys
input = sys.stdin.readline


def che():
    nums = [True]*(N+1)
    nums[0]=nums[1]=False
    primes = []
    for i in range(2,int(N**0.5)+1):
        if nums[i]:
            for j in range(i+i, N+1, i):
                nums[j] = False
    return [i for i in range(M,N+1) if nums[i]]

M = int(input())
N = int(input())
arr = che()
if arr:
    print(sum(arr))
    print(arr[0])
else:
    print(-1)