sm 기술 블로그
68. 4948 (베르트랑 공준) 본문
import math
arr_prime = [0 for _ in range(123456*2+1)]
# 한번에 출력하기 위해 result 사용
result = ''
# 1. 소수 저장
for i in range(1, 246913):
is_prime = True
for j in range(2, int(math.sqrt(i))+1):
if(i % j == 0):
is_prime = False
break
if(is_prime and i != 1):
arr_prime[i] = 1
# 2. 값 받아오기
arr_num = []
while(True):
N = int(input())
if(N == 0):
break
arr_num.append(N)
# 3. 개수 세기
for i in arr_num:
# 범위가 아니여서 마지막까지 반복 진행
result += str(arr_prime[(i+1):(i*2+1)].count(1))+"\n"
# arr[ A : B ] index가 A~B 까지
print(result)
소수가 아니면 0 소수이면 1이다.
값을 받아와서(한번에 받아오는 로직) 리스트에 저장.
소수리스트(arr_prime) 범위 중 값이 1인 index의 개수를 센다.
>> 핵심
https://smhope.tistory.com/177
'문제 > 백준_파이썬' 카테고리의 다른 글
70. 10872 (팩토리얼) (0) | 2022.06.06 |
---|---|
69. 9020(골드바흐의 추측) (0) | 2022.06.05 |
67. 1929(소수 구하기) (0) | 2022.06.04 |
66. 11653(소인수분해) (0) | 2022.06.04 |
65. 소수(2581) (0) | 2022.06.03 |
Comments