본문 바로가기
백준

[백준] 2581번 : 소수 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 7. 17.
728x90
반응형

 

 

2581번: 소수

M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다.  단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 소수를 찾을 범위의 시작 값을 입력받는다. M = int(sys.stdin.readline())
  3. 소수를 찾을 범위의 끝 값을 입력받는다. N = int(sys.stdin.readline())
  4. 찾은 소수를 저장할 리스트를 생성한다. li = list()
  5. 범위에 있는 값을 하나씩 추출하여 for i in range(M, N + 1)
  6. 2부터 추출한 수까지 나누어본다. for j in range(2, i + 1)
  7. 만약 나누는 수가 추출한 수이면 그전에 끝까지 나누어지는 수를 찾지 못했으므로 소수이다. if (j == i): li.append(i)
  8. 만약 추출한 수가 나누어 떨어지면 소수가 아니므로 종료한다. if (i % j == 0): break
  9. 소수를 모두 찾은 다음, 만약 소수가 0개이면 -1을 출력한다. if (len(li) == 0): print(-1)
  10. 반면에 소수가 있으면 else
  11. 모든 소수의 합을 출력하고 print(sum(li))
  12. 소수 중에서 가장 작은 소수를 출력한다. print(min(li))
반응형

3. 소스코드

import sys

M = int(sys.stdin.readline())
N = int(sys.stdin.readline())

li = list()
for i in range(M, N + 1):
    for j in range(2, i + 1):
        if (j == i):
            li.append(i)
            
        if (i % j == 0):
            break

if (len(li) == 0):
    print(-1)
else:
    print(sum(li))
    print(min(li))
728x90
반응형