[백준] 1978번 소수 찾기 파이썬

그린·2023년 3월 2일
0

백준

목록 보기
14/44
post-thumbnail

[백준] 1978번 소수 찾기


✔️문제

문제

주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.

입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.

출력
주어진 수들 중 소수의 개수를 출력한다.


✔️풀이

n = int(input())
arr =list(map(int, input().split()))

answer = 0
for a in arr:
  count = 0
  for i in range(2, a):
    if a%i==0:
      count += 1
  if count:
    n -= 1
  if a==1:
    n -= 1
print(n)
  1. 2부터 자기 자신-1 중 나눠지는 수의 개수를 센다.
  2. count가 0보다 크면 소수가 아니므로 n에서 1 뺀다.
    2-1. 1인 count가 0이 나오지만 소수가 아니므로 n에서 1 뺀다.
  3. n개의 수 중에서 소수가 아닌 수만큼 빼줬으므로 소수의 개수인 n을 리턴해준다.
n = int(input())
arr =list(map(int, input().split()))

answer = 0
for a in arr:
  count = 0
  if a==1:
    n -= 1
  else:
    for i in range(2, a):
      if a%i==0:
        n -= 1
        break
  
print(n)

효율성을 높이기 위해 1인 경우와 아닌 수로 구분해주었고, 나누어떨어지는 수를 만나면 반복문을 멈췄다.

0개의 댓글