프로그래밍/백준
[백준] 1978. 소수 찾기
서요서요
2022. 11. 15. 22:13
문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.

나의 풀이
n=int(input())
a=list(map(int, input().split())) # 테스트 케이스 입력
pn=[]
for i in a:
cnt=0 # 약수의 개수를 저장하는 변수
if i>1:
for r in range(2,i): # 2부터 i-1까지 반복
if i%r==0:
cnt+=1 # 약수가 있으면 카운트
if cnt==0:
pn.append(i) # 약수가 없으면(카운트가 0이면) 리스트에 저장
print(len(pn)) # 리스트의 요소 개수 출력
소수는 1과 자기 자신만이 약수인 수이므로, 2부터 자기 자신-1까지 쭉 나누어준 후
그중 약수가 없으면 소수로 판별한다.
나는 중간에 소수가 잘 나오는지 리스트로 확인하고 싶어서 append를 쓰고
len으로 리스트의 길이를 출력해주었는데,
그냥 int형 변수 하나 만들어준 다음 소수일 때마다 +해줘도 된다.