[단계별로 풀어보기] [python3] 기본 수학 2 - 베르트랑 공준 (4948)
2022. 4. 26. 22:36ㆍ공부/알고리즘
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
첫 제출
def isSo(k):
isTrue = [True]*(k*2)
for i in range(2, k*2):
for j in range(i-1, k*2, i):
isTrue[j] = False
count = 0
for i in range(k-1, k*2):
if isTrue[i] == True:
count += 1
print(count)
n = int(input())
tc = []
while n != 0:
tc.append(n)
n = int(input())
for t in tc:
isSo(t)
시간복잡도가 O(n^3)이므로 시간초과로 실패함.
에라토스테네스의 체와 소수 판별을 분리시켜서 해결했다.
최종 제출
def eratos(num):
isTrue = [True]*(num*2)
isTrue[0] = False
for i in range(2, num*2):
for j in range(i, num*2, i):
if i==j:
continue
isTrue[j-1] = False
isTrue[(num*2)-1] = False
return isTrue
def isSo(k, era):
count = 0
for i in range(k, k*2):
if era[i] == True:
count += 1
print(count)
n = int(input())
tc = []
while n != 0:
tc.append(n)
n = int(input())
era = eratos(max(tc))
for i in tc:
isSo(i, era)
'공부 > 알고리즘' 카테고리의 다른 글
[단계별로 풀어보기][python 3] 재귀 - 별찍기 - 10 (2447) (0) | 2022.04.30 |
---|---|
[단계별로 풀어보기][python 3] 기본 수학2 - 터렛 (1002) (0) | 2022.04.26 |
[단계별로 풀어보기] [python3] 기본 수학 2 - 소수 구하기 (1929) (0) | 2022.04.26 |
[단계별로 풀어보기 - python3] 기본 수학 2 - 소인수분해 (11653) (0) | 2022.04.18 |
[단계별로 풀어보기] 기본 수학 2 - 소수 (2581) (0) | 2022.04.18 |