728x90
문제 링크: https://www.acmicpc.net/problem/4948
4948번: 베르트랑 공준
베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼
www.acmicpc.net
❌ 1차시도 실패
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#시간초과(약수성질 소수판별 알고리즘이용)----------------------
def sosu(x):
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
from sys import stdin
while True:
n=int(stdin.readline())
cnt=0
if n==0:
break
elif n==1:
print(1)
else:
for x in range(n,2*n+1):
if sosu(x):
cnt+=1
print(cnt)
|
cs |
시간초과.....................데쓰요..
약수의 성질을 이용한 소수알고리즘 가지고는 역부족이었나보다...
❓ 정답은 ??
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#성공(에라토스테네스의 체 이용)---------------------------
def sosu(x):
array=[True for _ in range(x+1)]
for i in range(2,int(x**0.5)+1):
if array[i]==True:
j=2
while i*j<=x:
array[i*j] = False
j+=1
return [i for i in range(2,x) if array[i]==True]
#array 인덱스를 가지고 소수리스트를 return하기 = result
while True:
n= int(input())
if n==0:break
result=sosu(2*n+1) #1) 먼저 2n까지 소수를 구하기
print(len([i for i in result if i>n])) #2) n보다 큰 조건만족 소수 개수구하기
|
cs |
💯 풀이 과정
1) 먼저 에라토스테네스의 체를 이용하여 2n까지 소수들 리스트를 만들어 return하고
(**에타토스네스의 체는 여기를 참고👇👇👇)
2021.11.10 - [코딩공부/파이썬 공부] - [샛길공부] 소수판별,에라토스테네스의 체(feat. 이코테 유튜브강의)
2) return 된 리스트를 result로 할당하고
3) for반복문 + if i>n 보다 큰 아이들의 컴프리핸션을 하여 len을 출력한다.
😎오늘의 한줄평: 너무나도 복잡쓰, 어려운 문제이기에 내일 한번 다시 풀어보기!!!!!⭐⭐⭐
728x90
'😁 빅데이터 문제 풀기 & Study > - BAEKJOON 문제' 카테고리의 다른 글
[15649] N과 M (1) / 파이썬 (순열 라이브러리) (0) | 2021.11.28 |
---|---|
[4948] 베르트랑 공준 / 파이썬 (다시풀어보기) (0) | 2021.11.24 |
[2609] 최대공약수와 최소공배수/ 파이썬 (배웠던거 써먹기) (0) | 2021.11.22 |
[1085] 직사각형에서 탈출 / 파이썬 (어렵게 생각하지 말자) (0) | 2021.11.21 |
[2805] 나무자르기 / 파이썬 (오랜만에 이진탐색) (0) | 2021.11.19 |