Coding Test/baekjoon

[백준 4948] 베르트랑 공준 - python (solved.ac - 실버 2)

조용장 2022. 1. 15. 11:46

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

 

4948번: 베르트랑 공준

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

www.acmicpc.net

풀이

문제를 보았을때 알수있는 힌트

소수!-> 소수 문제는 에라토스테네스의 체 문제라는 것을 인지해두자

그냥 for문으로 풀면 시간초과가 나오니 에라토스테네스의 체로 소수를 찾고 문제를 풀면 쉽게 풀 수 잇는 문제이다.

 

import sys

input = sys.stdin.readline

while True:
    n = int(input())
    if n==0: # 종료 시키기
        break
    n_list=[False,False]+[True]*(2*n)
    result=[1]
    
    for i in range(2,(2*n)+1):
        if n_list[i]:
            result.append(i)
            for j in range(2*i,(2*n)+1,i):
                    n_list[j]=False
    filteredList = [x for x in result if x>n]
    # print(filteredList)
    print(len(filteredList))

https://github.com/dydwkd486/coding_test/blob/main/baekjoon/baekjoon4948.py