Algorithm/Baekjoon

[Algorithm] 백준 1978번 소수 찾기 (Python)

meizzi 2023. 2. 6. 16:31
728x90
반응형

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

문제

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

입력

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

출력

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

예제 입력 1

4
1 3 5 7

예제 출력 1

3

풀이

설명

  • 소수
    • 약수가 1과 자기 자신 밖에 없는 수
    • N이 소수가 되려면, 2보다 크거나 같고, N-1보다 작거나 같은 자연수로 나누어 떨어지면 안 된다.
  • 특정 수가 그 수보다 작거나 같은 자연수로 계속 나누었을 때, 0이 아닌 경우만 True를 반환하여 primeNum을 1씩 증가한다.
  • 이때, prime 함수 안의 return True 위치 조심하기

코드

N = int(input())
nums = list(map(int, input().split(" ")))
primeNum = 0 # 소수의 개수

def prime(A : int) :
    if A < 2 : # 2 미만은 소수, 합성수 X
        return False

    for i in range(2, A) :    
        if A%i == 0 :
            return False
    return True

for i in range(N) :
    if prime(nums[i]) :
        primeNum += 1

print(primeNum)
728x90
반응형