Leta Learns

[Python] 백준 2581번 - 소수 본문

Coding/백준

[Python] 백준 2581번 - 소수

leta 2022. 8. 25. 00:04

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

 

2581번: 소수

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

www.acmicpc.net

소수 판별만 하면 되는 문제였다.

 

입력 범위를 100까지로 착각해서 최솟값 구할 때 비교하는 초기값을 101로 설정했더니 계속 틀렸었다.

반례 찾으려고 게시판 돌아다니다가 문제를 다시 읽어봤는데 10000까지길래 10001로 수정했다.

 

문제를 잘 읽자 !

 

import sys
input = sys.stdin.readline

def is_prime(x):
    for i in range(2, x):
        if x % i == 0:
            return False
    if x == 1:
        return False 
    return True 

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

mn = 10001
total = 0

for i in range(m, n+1):
    if is_prime(i):
        total += i
        if i < mn:
            mn = i

if total == 0:
    print(-1)
else: 
    print(total)
    print(mn)

Comments