반응형
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1 복사
4
1 3 5 7
예제 출력 1 복사
3
정답
#전부 나눠보면서 찾는코드
n = int(input())
n_list = list(map(int, input().split()))
cnt = 0
if n==len(n_list): #리스트의 개수와 n이 같을때만 작동
for i in n_list:
divCnt = 0 #소수는 1과 자기자신으로만 나뉘기때문에, 해당 조건을 카운트하기위해.
for j in range(1, i+1):
if i%j==0:
divCnt+=1
if divCnt==2: #소수 조건을 만족하는지 체크
cnt+=1
print(cnt)
#에라토스테네스의 체
import math
n = int(input())
n_list = list(map(int, input().split()))
n_range = list(range(2,1001)) #자연수 범위를 정함.(소수는 1을 포함하지 않으므로 2부터)
cnt = 0
if n==len(n_list):
for i in range(2, math.ceil(math.sqrt(1000))): #p^2>=100인 p의 배수(p제외)까지 지우면 됨
for j in n_range:
if j/i==1: #자기 자신으로 나뉘는것은 제외
pass
elif j%i==0: #이외 나뉘는 수가 있다면 그 수를 정수 리스트에서 제거
n_range.remove(j)
for k in n_list:
if k in n_range:
cnt+=1
print(cnt)
반응형
'코딩테스트 > 알고리즘 문제풀이' 카테고리의 다른 글
[파이썬] 10757 : 큰 수 A+B (0) | 2021.07.13 |
---|---|
[파이썬] 1193 : 분수찾기 (0) | 2021.07.13 |
[파이썬] 1011 : Fly me to the Alpha Centauri (0) | 2021.02.24 |
[파이썬] 2775 : 부녀회장이 될테야 (0) | 2021.02.19 |
[파이썬] 10250 : ACM호텔 (0) | 2021.02.15 |
댓글