티스토리 뷰

<문제 링크>

 

2581번: 소수

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

www.acmicpc.net

 

<문제 풀이>

prime_num = [2]

for i in range(3, 10000):
  for j in range(2, int(i**0.5)+1):
    if i % j == 0:
      break
  else:
    prime_num.append(i)


M = int(input())
N = int(input())
num_list = []

for i in range(M, N+1):
  if i in prime_num:
    num_list.append(i)

if len(num_list) == 0:
  print(-1)
else:
  print(sum(num_list))
  print(num_list[0])

2581 입출력 예시

*key point: 소수의 리스트를 미리 만들어둔 뒤, 주어진 범위의 새로운 소수 리스트를 만들어 리스트의 합과 최소값(첫번째 요소)을 찾는다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함