https://www.acmicpc.net/problem/1978
_ = int(input()) # 필요 없음
N = list(map(int, input().split())) # 숫자들을 입력 받음
arr = [True] * (max(N) + 1) # True은 소수라는 뜻
arr[0] = arr[1] = False # False은 소수가 아님
for i in range(2, max(N) + 1):
# 2부터 최고 숫자까지 에라토스테네스의 체를 계산함
if arr[i]:
for j in range(i * 2, max(N) + 1, i):
# i의 배수들을 모두 False 처리함
arr[j] = False
cnt = 0
for n in N:
if arr[n]:
cnt += 1
print(cnt)
'Computer Science > 알고리즘' 카테고리의 다른 글
[알고리즘 - Python] BOJ 16563 (0) | 2022.06.10 |
---|---|
[알고리즘 - Python] BOJ 1929 (0) | 2022.06.10 |
[알고리즘 - Python] BOJ 1037 (0) | 2022.06.10 |
[알고리즘 - 이론] 0-1 KnapSack Problem and Fractional KnapSack Problem (0-1 배낭 문제, 분할 가능한 배낭 문제) (2) | 2022.06.09 |
[알고리즘 - Python] Dynamic Programming - TSP (동적계획법 - 외판원 순환 문제) (0) | 2022.05.29 |