알고리즘/백준

[백준 / 정수론] 1978 : 소수 찾기 (python)

난감 2024. 4. 8. 01:21
728x90

문제 설명

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력

첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력

주어진 수들 중 소수의 개수를 출력한다.

예제 입력 1

4
1 3 5 7

예제 출력 1

3

 

풀이

# 소수 찾기
# 에라토스테네스의 체

# n < 1,000 이하의 자연수
import math

n = int(input())
num = list(map(int, input().split()))
cnt = 0

A = [i for i in range(1001)]
A[1] = 0

for i in range(2, int(math.sqrt(len(A)) + 1)):
    if A[i] == 0:
        continue
    for j in range(i + i, len(A), i):
        A[j] = 0

for i in range(n):
    if A[num[i]] != 0:
        cnt += 1

print(cnt)

 

  • 에라토스테네스의 체를 이용하여 소수를 구한다.
  • 전체 수가 1,000 이하의 자연수이므로 소수를 찾기 위한 A 리스트 길이를 1001로 설정한다.
  • A는 인덱스와 값이 동일하다.
  • for문을 돌면서 소수를 판별한다. 소수일 경우 0으로 값을 할당한다.

 

 

반응형