https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
바로 전에 푼 소수 구하기 문제랑 비슷하게 생각해서 첫 시도를 해봤습니다.
# 백준 4948 베르트랑 공준
# 소수 찾는 함수 정의
def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
while True:
n = int(input())
count = 0
if n == 0:
break
for i in range(n+1, 2*n+1):
if prime(i):
count += 1
print(count)
어김없이 시간 초과가 났습니다.
매번 계산 하는게 힘든 것 같아서 미리 주어진 n의 범위에 해당하는 소수 리스트를 만들어놓고
꺼내면서 확인 하는 방법을 사용했습니다.
메모이제이션이랑 비슷(?)한 방법입니다.
def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
# 1 <= n <= 123,456
# 2 <= 2*n <= 246912
n_list = list(range(1,246913))
prime_list=[]
for i in n_list:
if prime(i):
prime_list.append(i)
while True:
n = int(input())
count = 0
if n == 0:
break
for i in prime_list: # 만들어 둔 소수 리스트에서 숫자 꺼내서 비교
if n < i <= 2*n:
count += 1
print(count)
'알고리즘 > 백준' 카테고리의 다른 글
[Python] 백준 파이썬 2750 수 정렬하기 (0) | 2022.09.09 |
---|---|
[Python] 백준 파이썬 2869 달팽이는 올라가고 싶다 (0) | 2022.09.08 |
[Python] 백준 파이썬 10870 피보나치 수 5 (0) | 2022.09.07 |
[Python] 백준 파이썬 9020 골드바흐의 추측 (0) | 2022.09.06 |
[Python] 백준 파이썬 1929 소수 구하기 (0) | 2022.09.04 |