본문 바로가기
DEV/백준 알고리즘

백준 알고리즘 2581번(파이썬)

by 올커 2022. 10. 20.

 

백준 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문에서는 인덱스 증가와 함께 홀수번이 사라지는 현상 발생
반응형

댓글