본문 바로가기

알고리즘/백준 문제풀이

백준 - 2581(소수, python)

728x90

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

 

2581번: 소수

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

www.acmicpc.net

문제 접근

  • 주어진 범위의 소수들의 합과 그 중 최소값을 출력하는 문제

정답 코드

n = int(input())
m = int(input())
ans = []
for i in range(n, m+1):
    error = 0
    if i > 1:
        # 1만 이하이니 for 문으로 돌려도 될거 같은데?
        for j in range(2, i):
            if i %j == 0:
                error += 1
                break
        
        if error == 0:
            ans.append(i)   

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

처음에 에러사항으로 계속 틀렸습니다.만 반복되었다.

원인을 찾아보니 위에 if i>1부분을 안썼다가 시작점이 1인 경우 1도 소수취급해버려서 그랬었다...