https://www.acmicpc.net/problem/17103
17103번: 골드바흐 파티션
첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다.
www.acmicpc.net
문제
- 골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다.
짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션의 개수를 구해보자. 두 소수의 순서만 다른 것은 같은 파티션이다.
입력
첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다.
출력
각각의 테스트 케이스마다 골드바흐 파티션의 수를 출력한다.
소수를 구분하는 리스트를 미리 생성하여 값을 비교하도록 하였다.
소수를 구할 때, 에라토스테네스의 체를 사용하여 구하여야 시간초과를 출력하지 않는다.
import sys
input = sys.stdin.readline
T = int(input())
numbers = [int(input()) for _ in range(T)]
n = max(numbers)
primes = [True] * (n + 1)
for i in range(2, int(n**0.5)+1):
if primes[i]:
for j in range(i*2, n+1, i):
primes[j] = False
for number in numbers:
count = 0
for i in range(2, int(number//2)+1):
if primes[i] and primes[number-i]:
count += 1
print(count)
'Coding Test > 백준' 카테고리의 다른 글
[백준] / [Python] / [28278] 스택 2 (0) | 2024.03.11 |
---|---|
[백준] / [Python] / [13909] 창문 닫기 (0) | 2024.03.07 |
[백준] / [Python] / [4134] 다음 소수 (0) | 2024.03.07 |
[백준] / [Python] / [2485] 가로수 (0) | 2024.03.06 |
[백준] / [Python] / [1735] 분수 합 (0) | 2024.03.06 |