티스토리 뷰
728x90
반응형
문제
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
코드
import math
result=[]
def c(a,b):
cnt=0
check = [True] * (b+1)
for i in range(2,int(math.sqrt(b)+1)):
if check[i] == True:
for j in range(i*2, b+1, i):
check[j] = False
for i in range(a+1,b+1): # a보다 크고 b보다 작은 수를 구하기 때문에 3<x<7 x=4,5,6 3개
if check[i] == True:
cnt += 1
return cnt
while True:
a=int(input())
if a==0:
break
result.append(c(a,2*a))
for i in result:
print(i)
코드설명
입력된 수를 a라 하면 a 보다 크고 2a 작은 소수의 개수를 찾는 문제이다.
결국 소수구하기 문제인데 에라토스테네스의 체를 안쓰게되면 시간초과가 나기때문에 에라토스테네스의 체를 이용하여 풀었다.
2부터 2a에 제곱근까지 for문을 돌리고 check가 true인 상태일때만 for문을 돌려 2,3,5 ... 배수들은 소수가 아니기 때문에 모두 false로 만들어 준다.
그리고 a~2a까지 True인 경우가 소수이다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 9184번 신나는 함수 실행 (Python) (0) | 2021.03.13 |
---|---|
[백준] 1436번 영화감독 숌 (Python) (0) | 2021.03.12 |
[백준] 1011번 Fly me to the Alpha Centauri (Python) (1) | 2021.03.12 |
[백준] 2839번 설탕배달 (Python) (0) | 2021.03.12 |
[백준] 1316번 그룹단어체커 (Python) (0) | 2021.03.12 |
댓글