백준 문제풀이

[백준 2581번 문제] 소수

eunda_coding 2022. 8. 2. 21:43

이 문제는 시작값과 종료값을 입력한 후에 그 사이에 있는 소수들의 합과 최소값을 출력하는 문제이다.

저번 문제에서는 소수를 구하는 문제였는데 소수가 되는 조건은 1보다 큰수 이면서 자기 자신보다 작은 수로 나누었을 때 나머지가 0이 되지 않는 수를 소수라고 정의하였다.

 

총 2번의 시도 끝에 문제를 맞췄당

sum = 0
for i in prime_num:
    sum += i

처음에는 소수를 구해서 리스트에 넣은 다음 따로 for문을 사용해서 하나하나 인덱스에 접근해서 더해줘서 그런지 시간초과 에러가 발생했다.

 

import sys
input = sys.stdin.readline

start = int(input())
end = int(input())

prime_num = []

for i in range(start, end+1):
    error = 0
    if i > 1:
        for j in range(2, i+1):
            if i % j == 0:
                error += 1
        if error == 1:
            prime_num.append(i)
           
# print(prime_num)

if len(prime_num) == 0:
    print(-1)
else:
    print(sum(prime_num))
    print(min(prime_num))

결국 for문에서 소수인지 판별을 해서 소수가 맞다면 prime_num이라는 리스트에 값을 추가해주고 마지막 if 조건문을 통해서 리스트 길이가 0이면 -1을 출력하고 리스트가 안비워져 있다면 소수들의 총합과 그 중에서 최소값을 출력해주도록 하였다.