조금씩 꾸준하게
[백준] 4948번 - 베르트랑 공준 (Python) 본문
반응형
문제
https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
접근 방법
전형적인 에라토스테네스의 체 문제이다.
n의 범위가 최대 123456까지이므로 넉넉하게 25만까지의 소수를 미리 구해놓으면 쉽게 계산할 수 있다.
코드
import sys
import math
from bisect import bisect_right
MAX_N = 250000
isPrime = [True] * MAX_N # isPrime[i]는 i가 소수인지 유무를 나타냄
isPrime[0] = False
isPrime[1] = False
for i in range(math.floor(math.sqrt(MAX_N))):
if isPrime[i] == False:
continue
j = 2
while i * j < MAX_N:
isPrime[i * j] = False
j += 1
primeArr = [i for i in range(MAX_N) if isPrime[i] == True] # 소수들만 모은 배열
while True:
n = int(sys.stdin.readline().rstrip())
if n == 0:
break
print(bisect_right(primeArr, 2 * n) - bisect_right(primeArr, n)) # n초과 2n이하 소수의 개수
풀이 정보
시도 횟수: 1회
총 문제 풀이에 걸린 시간: 9분 30초
반응형
'ProblemSolving > BOJ' 카테고리의 다른 글
[백준] 15720번 - 카우버거 (Python, 파이썬) (0) | 2023.03.23 |
---|---|
[백준] 5721번 - 사탕 줍기 대회 (Python, 파이썬) (0) | 2023.03.21 |
[백준] 9657번 - 돌 게임 3 (Python) (0) | 2023.03.15 |
[백준] 1764번 - 듣보잡 (Python) (0) | 2023.03.14 |
[백준] 2852번 - NBA 농구 (Python) (0) | 2023.03.13 |
Comments