문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
<코드>
def is_prime(num):
if num < 2:
return False
if num == 2:
return True
if num % 2 == 0:
return False
i = 3
while i * i <= num:
if num % i == 0:
return False
i += 2
return True
N = int(input())
numbers = list(map(int, input().split()))
count_primes = 0
for number in numbers:
if is_prime(number):
count_primes += 1
print(count_primes)
<풀이과정>
-2보다 작으면 소수가 아님(0,1)
-2는 소수
-짝수는 소수가 아니므로 False 반환
-홀수인 경우에는 3부터 시작하여 제곱근까지 반복하며 나누어지는 수가 있는지 확인(소수 판별)
*제곱근까지만 반복하는 이유
-작은 약수의 짝인 큰 약수는 항상 작은 약수의 배수
-제곱근 이후의 약수들은 이미 제곱근 이하의 수에서 짝으로 확인되었기 때문
'2024 코딩테스트 스터디' 카테고리의 다른 글
[6주_2일차] 프로그래머스-제일 작은 수 제거하기(Python) (0) | 2024.07.10 |
---|---|
[6주_1일차] 프로그래머스-나누어 떨어지는 숫자 배열(Python) (0) | 2024.07.09 |
[5주_5일차] 백준-17425 약수의 합(Python) (0) | 2024.07.06 |
[5주_6일차] 백준-2609 최대공약수와 최소공배수(Python) (0) | 2024.07.06 |
[5주_4일차] 백준-17427 약수의 합2(Python) (0) | 2024.07.05 |