[백준] 1978번 - 소수 찾기

chanyeong kim·2022년 2월 4일
0

백준

목록 보기
9/200
post-thumbnail

📩 출처

문제

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

입력

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

출력

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

👉 생각

  • 숫자 N이 소수인지 확인할 때는 2부터 N까지를 N으로 나누어서 0으로 나누어지는 것이 2와 N 뿐일 때이지만 대부분 시간초과가 발생한다
  • 이때 사용해야 하는 것이 에라토스테네스의 체 이다.
  • 굳이 N까지 확인하지 않고 2부터 N의 제곱근까지 약수의 여부를 검증하는 방법이다.
  • 2 부터 N의 제곱근까지 모두 나누어 떨어지지 않으면 소수임을 확인하는 함수를 만들어서 출력을 해주었다.
n = int(input())
numbers = list(map(int, input().split()))

def prime(number):
    if number == 1 or number == 0:
        return False
    for num in range(2, int(number**0.5)+1):
        if number % num:
            pass
        else:
            return False
    return True

cnt = 0
for number in numbers:
    if prime(number):
        cnt += 1
print(cnt)

0개의 댓글