백준 BaekJoon Online Judge // 2581
2021. 1. 20. 18:11ㆍProgramming/BOJ
백준 알고리즘 BaekJoon Online Judge 2581번 "소수" 문제입니다.
A = int(input())
B = int(input())
a = [False,False] + [True]*(B-1)
primes=[]
for i in range(2,B+1):
if a[i]:
primes.append(i)
for j in range(2*i, B+1, i):
a[j] = False
lst = [x for x in primes if x >= A]
if len(lst) > 0:
print(sum(lst))
print(lst[0])
else:
print(-1)
이것도 역시 에라스토테네스의 체를 사용해야 하는 문제다. 수의 범위가 10000이하기 때문에 더욱 더 사용해야 한다.
그리고 만든 소수 리스트를 입력받은 수의 범위로 필터링을 해서 새로운 리스트에 담는다.
필터링을 하였을 때 새로운 리스트의 길이가 0일 경우는 조건에 맞는 수가 없는 것이므로 -1을 출력하고
아닐 경우는 리스트의 합을 출력하고 리스트의 맨 앞의 값을 출력한다.
애초에 정렬된 소수 리스트로 필터링을 한 것이기 때문에 맨 앞의 값을 그대로 불러오면 된다.
'Programming > BOJ' 카테고리의 다른 글
백준 BaekJoon Online Judge // 4948 (0) | 2021.01.21 |
---|---|
백준 BaekJoon Online Judge // 11653 (0) | 2021.01.21 |
백준 BaekJoon Online Judge // 1978 (0) | 2021.01.20 |
백준 BaekJoon Online Judge // 10250 (0) | 2021.01.20 |
백준 BaekJoon Online Judge // 2869 (0) | 2021.01.20 |