백준 2581번_파이썬 알고리즘
Q. 백준 2581. 소수
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
(1) 입력 : 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
(2) 출력 : M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
입력 예시 | 출력 예시 |
60 100 |
620 61 |
64 65 |
-1 |
A. 풀이
# Q 백준 2581. 소수 ★★★
M = int(input())
N = int(input())
test = 0
num_list = [x for x in range(M, N+1)]
new_list = []
# print(num_list)
for x in num_list:
test = 0
if x == 1:
continue
elif x == 2:
new_list.append(2)
else:
for i in range(2, x):
if x % i == 0:
test += 1
break
if test == 0:
new_list.append(x)
# print(new_list)
if new_list != []:
print(sum(new_list))
print(min(new_list))
else:
print(-1)
# for문의 range가 되는 리스트의 값을 remove해버리면서,
# for문에서는 인덱스 증가와 함께 홀수번이 사라지는 현상 발생
반응형
'DEV > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 1929번(파이썬) (0) | 2022.10.22 |
---|---|
백준 알고리즘 11653번(파이썬) (0) | 2022.10.21 |
백준 알고리즘 1978번(파이썬) (0) | 2022.10.19 |
백준 알고리즘 10757번(파이썬) (1) | 2022.10.18 |
백준 알고리즘 2839번(파이썬) (0) | 2022.10.17 |
댓글