[기본수학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)