문제 링크: https://www.acmicpc.net/problem/1978
문제
주어진 수 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과 자기 자신만을 약수로 가지는 수다. (예, 2, 3, 5, 7, 11)
- N개의 숫자가 주어졌을 때, 소수의 개수를 구하는 문제이다.
코드 설명
- n개의 숫자를 입력받고, 이때 n개의 숫자들을 공백으로 구분한 하나의 문자열로 입력받는다. 문자열로 입력받은 n개의 수는 split 함수를 통해 공백을 기준으로 나누고, map함수를 통해 각각을 integer로 변환한다. 그리고 이 숫자들을 numbers 변수에 담았다.
num = int(input()) numbers = map(int, input().split())
- 소수의 개수를 찾기위해 prime이라는 변수를 선언한다.
- 첫 번째 for문을 통해 numbers 변수의 숫자들을 number 변수에 선언한다. 그리고 소수가 아닌 숫자를 찾기위해 no_prime 변수를 선언한다.
prime = 0 for number in numbers: no_prime = 0
- 소수는 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)
반응형
'IT > 알고리즘' 카테고리의 다른 글
[BAEKJOON] 백준 11653번: 소인수분해 (Python) (0) | 2021.09.03 |
---|---|
[BAEKJOON] 백준 2581: 소수 (Python) (0) | 2021.08.31 |
[BAEKJOON] 백준 10757번: 큰 수 A+B (Python) (0) | 2021.08.25 |
[BAEKJOON] 백준 2839번: 설탕 배달 (Python) (0) | 2021.08.25 |
[BAEKJOON] 백준 2775번: 부녀회장이 될테야 (Python) (0) | 2021.08.24 |
댓글