CodingTest/Baekjoon

[baekjoon] 백준 4948번(파이썬): 베르트랑 공준

JunJangE 2022. 2. 14. 00:46

문제

 

4948번: 베르트랑 공준

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

www.acmicpc.net

알고리즘

- 반복문을 통해 가능한 모든 수가 소수인지 확인한다.

- 소수인지 확인했다면 반복문을 통해 케이스를 입력받는다.

- 입력받은 수가 0이라면 반복을 멈추고 아니라면 다음을 수행한다.

- 반복문을 통해 소수인 수가 케이스 구간에 있는지 확인한다.

- 케이스 구간에 있다면 카운트한다.

코드

import sys


# 소수인지 확인
def decimal(x):
    if x == 1:
        return False
    for k in range(2, int(x**0.5)+1):
        if x % k == 0:
            return False
    return True


# 가능한 모든 수가 소수인지 확인
decimal_nums = []
for i in range(2, 246912):
    if decimal(i):
        decimal_nums.append(i)

# 반복문을 통해 케이스를 확인
while True:
    n = int(sys.stdin.readline())
    cnt = 0

    # 입력받은 수가 0이면 반복을 멈춤
    if n == 0:
        break

    # 소수인 수를 반복하여 구간에 있는지 확인
    for j in decimal_nums:
        # 구간에 있다면 카운트
        if n < j <= 2 * n:
            cnt += 1
    print(cnt)

github

 

GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법

내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.

github.com