출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기


간단한 소수 구하는 문제였다:

import sys

N = int(sys.stdin.readline())

numbers_list = list(map(int, sys.stdin.readline().split()))

all_num = [x for x in range(2, max(numbers_list)+1)]
prime_num = []
for i in range(2, max(numbers_list)+1):
    if i in all_num:
        prime_num.append(i)
        for j in range(len(all_num)):
            if all_num[j]%i == 0 and all_num[j] != i:
                all_num[j] = 0

prime_count = 0

for k in numbers_list:
    if k in prime_num:
        prime_count += 1

print(prime_count)

numbers_list에는 N개의 숫자들을 리스트로 저장한다.
소수를 구하는 것은, 주어진 숫자들 중 가장 큰 숫자를 기준으로, 그 숫자 포함 그 숫자 이하의 수들 중 소수를 찾는 것으로 하면 시간이 덜 걸리게 끔 할 수 있다.
마지막으로 prime_count 라는 숫자는 소수의 개수를 세주기 위해 만든 변수로, 만약 numbers_list에 있는 수들이 앞서 정의한 소수들의 리스트인 prime_num에 있다면 소수일 것이므로, 이를 prime_count에 1을 더해주고 마지막에 prime_count를 출력해준다.
(소수를 구하는 것은 에라토스테네스의 체를 이용하여 풀었다.)