본문 바로가기
IT/알고리즘

[BAEKJOON] 백준 1978번: 소수 찾기 (Python)

by 무녈 2021. 8. 31.

문제 링크: https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net


문제

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

입력

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

출력

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


코드

n = int(input())
numbers = list(map(int, input().split()))
prime = 0
for number in numbers:
    no_prime = 0
    if number > 1:
        for i in range(2, number):
            if number%i == 0:
                no_prime += 1
        if no_prime == 0:
            prime += 1
print(prime)

문제 요약

  1. 소수: 소수는 1보다 큰 자연수 중 1과 자기 자신만을 약수로 가지는 수다. (예, 2, 3, 5, 7, 11)
  2. N개의 숫자가 주어졌을 때, 소수의 개수를 구하는 문제이다.

코드 설명

  1. n개의 숫자를 입력받고, 이때 n개의 숫자들을 공백으로 구분한 하나의 문자열로 입력받는다. 문자열로 입력받은 n개의 수는 split 함수를 통해 공백을 기준으로 나누고, map함수를 통해 각각을 integer로 변환한다. 그리고 이 숫자들을 numbers 변수에 담았다.
    num = int(input())
    numbers = map(int, input().split())​
  2. 소수의 개수를 찾기위해 prime이라는 변수를 선언한다.
  3. 첫 번째 for문을 통해 numbers 변수의 숫자들을 number 변수에 선언한다. 그리고 소수가 아닌 숫자를 찾기위해 no_prime 변수를 선언한다.
    prime = 0
    for number in numbers:
        no_prime = 0​
  4. 소수는 1보다 큰 자연수 이므로, number 변수가 1보다 클 경우, 2번째 for문으로 이동, 2부터 number 숫자 -1 까지 범위에서 number를 나누었을 때 나머지가 0인 경우 no_prime을 1증가하고, no_prime이 0일 경우, 소수 변수 prime을 1 증가한다.
    for문이 끝났을 때 prime을 출력한다.
        if number > 1:
            for i in range(2, number):
                if number%i == 0:
                    no_prime += 1
            if no_prime == 0:
                prime += 1
    print(prime)​
반응형

댓글