소수 찾기
import sys
def main():
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
cnt_primes = 0
for a in arr:
if a == 1:
continue
for i in range(2, a):
if a % i == 0:
break
else:
cnt_primes += 1
print(cnt_primes)
main()
소수
$1$보다 큰 양의 정수가 $1$과 자기 자신만으로 나누어 떨어지면, 그 수를 소수(prime number)라고 하고, 그렇지 않으면 합성수(composite number)라고 합니다. 따라서 모든 양의 정수는 다음과 같이 나뉩니다.
- 소수: $2$, $3$, $5$, $7$, $11$, $13$, $17$, $19$, $23$, $29$, ...
- 합성수: $4$, $6$, $8$, $9$, $10$, $12$, $14$, $15$, $16$, $18$, ...
- 소수도 합성수도 아닌 수: $1$
소수판별법
위 정의에 따라, $n$이 소수인지 판별하기 위해서는 $1$인지 확인하고, $2$부터 $n-1$까지의 수 중 아무것도 $n$을 나누어 떨어지게 하는 수가 있는지 확인하면 됩니다.
소수의 특성을 이용한 문제들이 아주 많기 때문에 개념을 잘 알아두면 좋습니다. 또한 위 방법보다 더 빠른 소수판별법들이 있는데, 사용할 필요가 있을 때 설명하도록 하겠습니다.
댓글