백준 / 골드바흐의 추측 / 9020

박성완·2022년 4월 27일
0

백준

목록 보기
78/78
post-thumbnail

Question

문제링크
Silver 1

Logic

기본 구조 : math
1. 10000까지의 수 중에 소수를 먼저 선별한다.
2. 각 테스트케이스 마다, 입력된 수 이하의 소수들을 임시 리스트로 둔다.
3. 그 안의 수 들 중 기준 수로 합을 이루는 두 수가 모두 소수라면, 출력한다.
4. 이 때 최소의 차이를 두기 위해 탐색을 중간 수부터 한다.

Code

from sys import stdin
import math
max_length=10001

prime = [0,0]+[1 for _ in range(max_length)]

for i in range(2,int(math.sqrt(max_length))+1):
    if prime[i]==0 : continue
    j=i
    while j <= max_length:
        j+=i
        if j > max_length : break
        prime[j]=0
        

for _ in range(int(stdin.readline())):
    N = int(stdin.readline())
    part = prime[:N]
    for j in range(N//2,1,-1):
        if part[j]!=0 and part[N-j]!=0:
            print(j,N-j)
            break

0개의 댓글