alpyrithm_알파이리즘

[알고리즘][Python] 백준(BOJ) 17103 골드바흐 파티션_파이썬 본문

Algorithm/백준 알고리즘_Python

[알고리즘][Python] 백준(BOJ) 17103 골드바흐 파티션_파이썬

알파이 2020. 11. 10. 08:50

 

17103 골드바흐 파티션    www.acmicpc.net/problem/17103

 

17103번: 골드바흐 파티션

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

www.acmicpc.net

 

 

문제 풀기 전 공부할 것 : 수학, 정수론, 소수 판정, 에라토스테네스의 체

 

 

 

 

 

 

 

풀이

<내용>

  • 모든 테스트 케이스를 입력받는다.
  • 테스트 케이스에서 가장 큰 값을 기준으로 소수를 찾는다.
  • for문을 돌면서 두 소수의 합이 해당 정수인 경우 개수+1을 한다.
  • 모든 경우를 찾고 출력한다.

 

 

<코드>

import sys
input = sys.stdin.readline

t = int(input())
nums = [int(input()) for _ in range(t)]
m = max(nums)

prime = [False, False] + [True] * (m-1)
for i in range(2, int(m**0.5)+1):
    if prime[i]:
        for j in range(i+i, m+1, i):
            if prime[j]:
                prime[j] = False
                
for num in nums:
    cnt = 0
    for i in range((num//2)+1):
        if prime[i] and prime[num-i]:
            cnt += 1
    print(cnt)

 

 

 

 

 

 

 

 

728x90
반응형
Comments