Algorithm/Baekjoon Online Judge
[BOJ] 2581번
mirae.kwak
2022. 3. 12. 13:43
728x90
https://www.acmicpc.net/problem/2581
2581번: 소수
M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다.
www.acmicpc.net
Python3
if __name__ == '__main__':
M = int(input())
N = int(input())
prime = []
for number in range(M, N+1):
is_sosu = 1
if number == 1:
continue
for i in range(2, number):
if number % i == 0:
is_sosu = 0
break
if is_sosu:
prime.append(number)
if not prime:
print(-1)
else:
print(sum(prime))
print(min(prime))
입력받은 M부터 N까지 수를 돌면서 소수를 찾아 prime 리스트에 삽입했다. 소수 판별은 우선 수가 1일 경우 예외처리를 해주었고, 2부터 number-1까지의 수들로 나누어보면서 나누어진다면 소수가 아님으로 is_sosu변수 값을 0으로 저장했다. 반복문이 끝나고 is_sosu 변수를 보았을 때 소수라면 prime 리스트에 삽입했다.
만약 prime 리스트가 비어있다면 -1을 출력하고 아니라면 내장함수인 sum과 min을 사용해 소수의 합과 최소값을 출력했다.
728x90