본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

백준 2581 - 소수 (Python)

by su-no 2022. 5. 9.

문제

자연수 M, N이 주어질 때 M 이상 N 이하의 자연수 중 소수의 합과 최솟값을 구하라.

 

코드

m = int(input())
n = int(input())

sum = 0
prime_numbers = []
for num in range(m, n+1):
    if num == 2:
        sum += num
        prime_numbers.append(num)
    else:
        for i in range(2, num):
            if num % i == 0:
                break
            if i == num-1:
                sum += num
                prime_numbers.append(num)

if(prime_numbers):
    print(sum)
    print(min(prime_numbers))
else:
    print(-1)

 

풀이

1) M부터 N까지 자연수를 반복한다.

2) 자연수 num을 2부터 num-1까지 나눠보고, 나누어 떨어지는 숫자가 있으면 소수가 아니다.

3) for문을 탈출하지 않고 i가 num-1까지 증가하는 경우 num은 소수이다. 합계에 더해주고 소수 list에 추가한다.

     2는 소수이므로 예외처리 한다.

4) 소수 list에 원소가 존재한다면 (소수가 존재하면) 합계와 최솟값을 출력한다.

     소수가 없으면 -1을 출력한다.