백준 알고리즘 문제 풀이 [Python]

[백준/Python] 2581번 소수 (기본수학2)

wlalsu_u 2023. 2. 25. 01:37

2581번 : 소수 문제

 

 

자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라

이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.

 

예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중

소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로,

이들 소수의 합은 620이고, 최솟값은 61이 된다.

 

 

 

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

 

2581번: 소수

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

www.acmicpc.net

 

 


 

풀이 코드

 

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

sosu = []

for i in range(m, n+1):
    for j in range(2, i+1):
        if j == i:
            sosu.append(i)

        if i % j == 0:
            break


if not sosu:
    print(-1)
else:
    print(sum(sosu))
    print(min(sosu))

 

 

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

 

 

- 입력받은 두 정수를, 변수 m, n 에 저장

 

- 두 정수가 서로 다른 줄로 입력되므로, input() 을 통해 한 줄의 문자열씩 입력받음

 

- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용

 

 

 

sosu = []

 

 

- m 이상 n 이하의 자연 수 중, 소수 인 것을 저장할 리스트 sosu 선언

 

 

 

for i in range(m, n+1)

 

- m 이상 n 이하의 자연수 중 소수를 찾아야 하므로, for 반복문 사용

 

- range() 를 사용하여 m 부터 n 까지 for 문을 반복

 

- i의 값으로 m 부터 n 까지 순차적으로 들어감

 

 

 

for j in range(2, i+1):

 

 

- range() 를 사용하여 2부터 i 까지 for문을 반복

 

- j 값으로 2 부터 i까지 들어감

 

- 소수는 1보다 큰 자연수 중에 있으므로, 2부터 탐색

 

 

 

 

if j == i:    /    sosu.append(i)

 

 

- i 값이 j 에 도달하는 경우, 1을 제외하고 나누어 떨어지는 수가 없다는 뜻 (소수)

 

- 변수명.append() 메서드를 사용하여, 소수를 sosu 리스트에 삽입

 

 

 

if i % j == 0:    /    break

 

 

- i 를 j 로 나누었을 때, 나누어 떨어지는 경우

 

- 소수에 해당 하지 않으므로 for 문을 빠져나감

 

 

 

if not sosu:    print(-1)

 

 

- m 이상 n 이하의 자연 수 중 소수가 없는 경우

 

- -1을 출력

 

 

 

else:

 

 

- m 이상 n 이하의 자연 수 중 소수가 있는 경우

 

 

 

print(sum(sosu))

 

 

- sum() 함수는 리스트와 같은 iterable 객체가 입력으로 주어졌을 때, 모든 원소의 합을 반환

 

- sosu 리스트에 있는 소수의 합을 구하고 출력

 

 

 

print(min(sosu))

 

 

- min() 함수는 파라미터가 2개 이상 들어왔을 때, 가장 작은 값을 반환

 

- sosu 리스트에 있는 소수 중, 가장 작은 값을 출력

 

 

 

 

 

 

 

 

나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.

https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC