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