백준(Python) 풀이/수학

백준(Python) 2581번 소수 풀이

개발윗미 2021. 10. 6. 13:43

Python으로 구현한 2581번 소수 문제 풀이입니다.

 

https://www.acmicpc.net/problem/2581

 

2581번: 소수

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

www.acmicpc.net


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

result = 0
min = 0

for i in range(m, n + 1) :
  flag = 0
  if i == 1 :
    continue
  for j in range(2, i) :
    if i % j == 0 :
      flag = 1
      break
    
  if flag == 0 :
    if min == 0 :
      min = i

    result += i

if result != 0 :
  print(result)
  print(min)
else :
  print(-1)

 

입력받을 자연수 m과 n, 소수 값들 중 최솟값을 담을 변수 min, 소수인 것을 모두 더한 변수 result 를 선언한다.

 

중첩 반복문을 활용하는데, 첫번째 반복문은 입력받은 자연수 m부터 n까지 수행되도록 한다.

 

만약 해당 값이 1이라면 넘어가도록 하고, 두번째 반복문에서는 2부터 i까지 수행하고 소수가 아니라면 변수 count에

 

1을 할당하고 두번째 반복문을 빠져나오도록 한다.

 

두번째 반복문이 끝난 후 변수 count의 값이 0이라면 소수로 판단되기 때문에 변수 result에 해당 값을 누적해간다.

 

추가적으로 최솟값을 도출하기 위해 변수 min의 값이 0일 경우에만 해당 값을 할당한다. 즉, 가장 먼저 나온 소수값을 

 

할당하는 것이다. 

 

최종적으로 합(result)과 최솟값(min)을 출력하고, 소수가 없을 경우는 -1을 출력한다.