한 걸음씩 기록하며
[백준] 4948번 베르트랑 공준 본문
⛏ 문제 파악
- 주어지는 임의의 숫자 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수의 값을 구하는 문제
- 에라토스테네스의 체의 방법으로 문제를 풀면 된다.
- 제한 사항에서 n이 123,456까지 주어진다는 것을 생각하여 체를 만들면 된다.
👉🏻 답안
import math
import sys
def isPrime(n):
if n == 1:
return False
else:
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
all_list = list(range(2, 246912))
prime_list = []
for i in all_list:
if isPrime(i):
prime_list.append(i)
n = int(sys.stdin.readline())
while n != 0:
count = 0
for i in prime_list:
if n < i <= n*2:
count +=1
print(count)
n = int(sys.stdin.readline())
📑 간단한 설명
- 체를 크게 만들어야하기 때문에 시간 절약을 위해, sys.stdin.readline()으로 입력을 받았다.
- 소수 판별을 위해 math.sqrt 함수를 사용했다.
- all_list라는 체는 2n을 기준으로하여 246,912를 만들었다.
- 끝으로 임의의 수 n보다 크고 2n보다 작은 i(소수)의 갯수를 카운트하여 출력하였다.
'알고리즘 & 코딩테스트' 카테고리의 다른 글
[백준] 1929번 소수구하기 (0) | 2022.03.04 |
---|---|
[백준] 10250번 ACM 호텔 (0) | 2022.03.03 |
[백준] 2839번 설탕배달 (0) | 2022.03.02 |
[프로그래머스 코딩테스트] 2021 KAKAO BLIND RECRUITMENT 신규 아이디 추천 (0) | 2022.01.21 |
[프로그래머스 코딩테스트] 시저 암호 (0) | 2022.01.20 |
Comments