sm 기술 블로그

68. 4948 (베르트랑 공준) 본문

문제/백준_파이썬

68. 4948 (베르트랑 공준)

sm_hope 2022. 6. 4. 21:04
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

 

[파이썬 python] 리스트

기본 선언 arr_prime = [] 원하는 범위, 원하는 값으로 초기화 arr_prime = [0 for _ in range(100)] 0~99 까지 배열을 생성하는데 값은 0으로 초기화 한다. 원하는 인덱스 범위 설정 arr_prime[0:5] 0~5 선택됨

smhope.tistory.com

 

'문제 > 백준_파이썬' 카테고리의 다른 글

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