개발 연습장/백준 문제풀이

[파이썬, Python] 백준 4948: 베르트랑 공준

LooanCheong 2022. 12. 26. 16:23
반응형

문제

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

 

4948번: 베르트랑 공준

베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼

www.acmicpc.net

코드

prime = []

for i in range(2, 246913):
    cnt = 0
    for j in range(2, int(i**0.5)+1):
        if i % j == 0:
            cnt += 1
            break
    if cnt == 0:
        prime.append(i)

while True:
    n = int(input())
    primecnt = 0
    
    if n == 0:
        break
    for i in prime:
        if n < i <= 2*n:
            primecnt += 1
    print(primecnt)

설명

계속 시간초과에 걸려서 고민했던 문제였다.

핵심은 범위가 주어져 있으므로 미리 소수를 계산해놓은 리스트를 만드는 것이었다.

미리 반복문을 한 번 돌려 리스트를 만들어놓고,
아래의 조건문에선 소수의 유무만을 체크하면 되는 문제였다.

문제 자체는 이전의 문제들에서 볼 수 있는 유형이었으나 시간 초과를 조금 생각하게 되는 문제였다

반응형