본문 바로가기

코딩

[Python] 백준 #17103. 골드바흐 파티션

https://www.acmicpc.net/problem/17103

 

17103번: 골드바흐 파티션

첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다.

www.acmicpc.net

 

# 17103 - Python 3

import sys
from math import sqrt                               # 제곱근 사용 위해 작성

input = sys.stdin.readline

repeat_time = int(input())                          # 반복 횟수

case_list = []                                      # 입력 받은 숫자들을 저장할 list

for _ in range(repeat_time):                        
    x = int(input())
    case_list.append(x)

max_num = max(case_list)                            # 입력 받은 숫자들 중 최댓값(이 값까지 소수를 구해놓기 위함)

primes = [i for i in range(max_num + 1)]            # 소수 모임
primes[0], primes[1] = False, False

for i in range(2, int(sqrt(max_num) + 1)):          # 소수 판별
    if primes[i]:
        for j in range(i * 2, max_num + 1, i):
            primes[j] = 0

for i in range(repeat_time):
    cnt = 0
    
    for j in range(2, case_list[i] // 2 + 1):
        if primes[j] and primes[case_list[i] - j]:
            cnt += 1

    print(cnt)

'코딩' 카테고리의 다른 글

[Python] 백준 #1237. 정ㅋ벅ㅋ  (0) 2023.03.22
[Python] 백준 #27323. 직사각형  (0) 2023.03.21
[Python] 백준 #4948. 베르트랑 공준  (0) 2023.03.20
[Python] 백준 #4134. 다음 소수  (0) 2023.03.20
[Python] 백준 #2485. 가로수  (0) 2023.03.20