문제
주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.
입력
첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.
출력
주어진 수들 중 소수의 개수를 출력한다.
예제 입력 1
4
1 3 5 7
예제 출력 1
3
풀이
N = int(input())
num = list(map(int, input().split()))
ans = []
for i in num:
cnt = 0 # 나누었을 때 0이 되는 숫자의 개수
for j in range(1, i + 1):
if i % j == 0: # 입력 받은 숫자를 1부터 자기자신의 수까지 나누어, 나머지가 0인 횟수를 구함
cnt += 1
ans.append(cnt) # 입력 받은 숫자의 cnt 값을 추가
minority = 0
for i in ans:
if i == 2: # 위의 cnt 값이 2이면 소수
minority += 1
print(minority)
다른 풀이 이해
풀이1
n = int(input())
numbers = map(int, input().split())
sosu = 0
for num in numbers:
error = 0
if num > 1 :
for i in range(2, num): # 2부터 n-1까지
if num % i == 0:
error += 1 # 2부터 n-1까지 나눈 몫이 0이면 error가 증가
if error == 0:
sosu += 1 # error가 없으면 소수.
print(sosu)
입력 받은 수 num이 1보다 클 때, 2부터 (num -1) 까지의 수와 나누어 지는 수가 없으면 error = 0
나누어 지는 수가 있으면 error에 1씩 더한다.
error가 0이면 소수이다.
풀이2
n = int(input())
data = list(map(int, input().split()))
count = 0
for x in data:
for i in range(2, x+1): # 2부터 입력한 숫자 x까지
if x % i == 0:
if x == i: # i가 x에 도달해 나눠지면 그 수는 소수이므로 +1
count += 1
break # 입력한 숫자 x까지 도달하지 못하고 나눠지면 소수가 아니므로 멈춤
print(count)
'알고리즘' 카테고리의 다른 글
| [Python] 백준 2581번 소수 (0) | 2022.11.30 |
|---|---|
| [Python] 백준 1292번 쉽게 푸는 문제 (0) | 2022.11.30 |
| [Python] 프로그래머스 위장 (0) | 2022.11.27 |
| [Python] 프로그래머스 전화번호 목록 (0) | 2022.11.27 |
| [Python] 백준 2693번 N번째 큰 수 (0) | 2022.11.27 |