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

jwKim·2023년 1월 17일
0

💻코테코테

목록 보기
27/42

< 과제 >

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

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

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

[ 예제 입력 1 ]
4
1 3 5 7

[ 예제 출력 1 ]
3

< 내 코드 >

N = int(input())
nums = list(map(int, input().split()))


result = []

for i in range(len(nums)):
    if nums[i] == 1: # 1은 소수가 아니므로 제외
        pass
    else:
        num = nums[i] 
        count = 0 # 이번 숫자의 약수 개수
        
        for j in range(2, num): # 소수는 자신을 제외하고 2 이상의 자연수로 나누어 떨어지지 않아야함
            if num % j == 0: # 2 이상의 자연수로 나누어 떨어졌다면 약수 개수 +1
                count += 1 
            
        if count == 0: # 약수 개수가 0개이면 이 수는 소수!
            result.append(num)

print(len(result))
  • 입력받은 수의 개수만큼 반복문을 도는데, 1은 소수가 아니므로 1인 경우에는 pass한다.
  • 1이 아닌 경우에 다음 for문을 타는데, count 라는 변수를 선언하여 약수의 개수를 카운팅한다. 반복문을 돌며 나누었을 때 나머지가 0인 수가 있다면 count에 1을 추가한다.
  • 반복이 끝난 후에도 count가 0이라는 의미는, 1과 자기 자신을 제외하고는 나누어 떨어지는 수가 없다는 의미이므로 소수이다. 결과 리스트에 저장한다.

< 출처 >

0개의 댓글