본문 바로가기
BOJ/[BOJ] Python

백준 1978번 풀이

by Lv. 35 라이츄 2022. 8. 18.

문제

https://www.acmicpc.net/problem/1978

 

1978번: 소수 찾기

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

www.acmicpc.net

N개의 수가 주어질 때, 여기서 소수의 개수는?

 

소수?

1과 자기 자신만 약수로 가지는 수이다. 참고로 1은 소수가 아님.

 

풀이

import sys
N = int(sys.stdin.readline())
b = list(map(int,sys.stdin.readline().split()))
prime = []
def isprime(a):
    if a < 2:
        return False
    for i in range(2,a):
        if a % i == 0:
            return False
    else:
        return True
for j in b:
    if isprime(j):
        prime.append(j)
print(len(prime))

참고로 함수 쓰지 말라고는 안 했다.

def isprime(a):
    if a < 2:
        return False
    for i in range(2,a):
        if a % i == 0:
            return False
    else:
        return True

이 함수는 에라토스테네스의 체에서 썼던건데, 2보다 작거나(1은 소수가 아님) 자기 자신 외에 다른 수로 나눠떨어지는 수는 전부 false 처리하고 나머지를 true처리한다.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 11653번 풀이  (0) 2022.08.19
백준 2581번 풀이  (0) 2022.08.19
백준 1011번 풀이  (0) 2022.08.18
백준 10757번 풀이  (0) 2022.08.18
백준 2839번 풀이  (0) 2022.08.18

최근댓글

최근글

skin by © 2024 ttutta