문제 출처 : www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
# M <= 소수 <= N // 소수의 합과 이 중 최소값 Return
#소수 판별 함수 (문제 1978번 참조)
def Prime (n):
if n < 2: return False
elif n==2: return True
else:
for i in range(2,n):
if n%i == 0 :
return False
break
return True
# M,N이 주어짐
M = int(input())
N = int(input())
# 소수로 판별된 숫자들을 List에 저장
prime_list = []
for i in range(M, N+1):
if Prime(i): prime_list.append(i)
# 소수가 없으면 -1 출력
if len(prime_list) == 0: print(-1)
# 소수가 있으면
else :
print(sum(prime_list))
# 소수 리스트의 합 출력
print(min(prime_list))
# 소수 리스트의 최소값 출력
Comments; 1) input을 줄바꿈으로 받으라고 했는데 space로 받는 것으로 코딩했더니 ValueError가 발생함. 2) 앞의 문제에서 소수 판별식을 함수로 짜놓았더니 문제 푸는 것이 훨씬 쉬움
'백준's 단계별 풀이' 카테고리의 다른 글
Stage_9 (기본수학2) 192번 소인수분해 (0) | 2021.04.06 |
---|---|
Stage_9 (기본수학2) 11653번 소인수분해 (0) | 2021.04.06 |
Stage_8 (기본수학2) 1978번 소수 찾기 (0) | 2021.03.23 |
Stage_8 (기본수학1) 1011번 Fly me to the Alpha Centauri (0) | 2021.03.21 |
Stage_8 (기본수학1) 2839번 설탕 배달 (0) | 2021.03.18 |