문제
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.
예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.
입력
입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.
M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.
출력
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.
단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
✔ Solution
min_num = int(input())
max_num = int(input())
sosu_list = []
for i in range(min_num, max_num + 1): # 첫 입력값과 두번째 입력값 사이만 진행
count = 0
for j in range(1, i + 1): # 1부터 i항까지 진행
if i % j == 0:
count += 1
if count == 2: # 1과 자기자신뿐이면
sosu_list.append(i)
if len(sosu_list) == 0:
print(-1)
else:
print(sum(sosu_list))
print(sosu_list[0])
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 1929번 : 소수 구하기 (0) | 2022.01.23 |
---|---|
[Python] 백준 11653번 : 소인수분해 (0) | 2022.01.23 |
[Python] 백준 1978번 : 소수 찾기 (0) | 2022.01.23 |
[Python] 백준 10757번 : 큰 수 A+B (0) | 2022.01.22 |
[Python] 백준 2839번 : 설탕 배달 (0) | 2022.01.22 |