728x90
📌 문제
https://www.acmicpc.net/problem/4948
📌 문제 접근 방법
- is_prime이라는 배열을 만들고, 2부터 n의 제곱근까지를 탐색하며 소수의 배수를 모두 False로 바꿔준다.
- n부터 2n까지 반복하여 해당 숫자가 소수라면 cnt를 1 더해준다.
- n에 0이 입력되면 반복문을 종료한다.
📌 코드
# 백준 4948 베르트랑 공준
import sys
input = sys.stdin.readline
def is_prime_number(number):
if number == 2:
return True
for x in range(2, int(number**0.5) + 1):
if number%x == 0:
return False
return True
n = int(input())
while n:
is_prime = [True for _ in range(2*n+1)]
is_prime[0] = False
is_prime[1] = False
for x in range(2, int((2*n)**0.5) + 1):
if is_prime[x]:
if is_prime_number(x):
mul = 2*x
while mul <= 2*n:
is_prime[mul] = False
mul += x
cnt = 0
for i in range(n+1, 2*n + 1):
if is_prime[i]:
cnt += 1
print(cnt)
n = int(input())
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BOJ/Python] 2688. 줄어들지 않아 (0) | 2021.10.28 |
---|---|
[BOJ/Python] 20057. 마법사 상어와 토네이도 (0) | 2021.10.28 |
[BOJ/Python] 1197. 최소 스패닝 트리 (0) | 2021.10.21 |
[BOJ/Python] 1717. 집합의 표현 (0) | 2021.10.21 |
[BOJ/Python] 17144. 미세먼지 안녕! (0) | 2021.10.20 |
댓글