코딩테스트/알고리즘 문제풀이

[파이썬] 1978 : 소수 찾기

지과쌤 2021. 2. 25.
반응형

문제

주어진 수 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)

 

반응형

댓글

💲 추천 글