반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴
조금씩 꾸준하게
[백준] 4948번 - 베르트랑 공준 (Python) 본문
ProblemSolving/BOJ

[백준] 4948번 - 베르트랑 공준 (Python)

적절 2023. 3. 20.
반응형

문제

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초

 

반응형
Comments