[기본수학2] 소수

2021. 3. 12. 12:25백준

 

2581번: 소수

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

www.acmicpc.net

소수찾기 문제랑 사실상 같다.

 

 

[기본수학 2] 소수 찾기

1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 시간 절약을 위해 10 이하 소수를 배열에 넣고 시작

nookpi.tistory.com

 

설명은 생략

 

from sys import stdin
import math

test_min = int(stdin.readline())
test_max = int(stdin.readline())

# 확인할 소수 갯수
pn_sum = 0
pn_min = 0
pn_range_list = []

# 10 이하 소수 리스트
pn_list = [2, 3, 5, 7]


def check_prime_no(no: int):
    # 1,0 이면 제외
    if no == 1 or 0:
        return False
    # 이미 소수 리스트에 속한 요소면 소수
    if no in pn_list:
        return True
    
    for j in range(2, math.ceil(math.sqrt(no)) + 1):
        if no % j == 0:
            return False

    # 없으면 소수니까 소수 리스트에 넣고 참 반환
    pn_list.append(no)
    return True


for i in range(test_min, test_max + 1):
    if check_prime_no(i):
        pn_range_list.append(i)


if len(pn_range_list) > 0:
    print(sum(pn_range_list))
    print(min(pn_range_list))
else:
    print(-1)