def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5) + 1):
if x % i == 0:
return False
return True
T = int(input())
prime_list = []
for i in range(2, 10001):
if prime(i) == True:
prime_list.append(i)
for i in range(T):
case = int(input())
case_list = []
ans = []
for i in range(case):
if i in prime_list:
case_list.append(i)
for j in case_list:
if (case - j) in case_list:
ans.append([j, case-j])
if len(ans) % 2 == 0:
middle = len(ans) // 2
else:
middle = len(ans) // 2 + 1
print(ans[middle-1][0], ans[middle-1][1])
예시 출력은 잘 되었으나 시간초과...
def prime(x):
if x == 1:
return False
for i in range(2, int(x**0.5) + 1):
if x % i == 0:
return False
return True
T = int(input())
for i in range(T):
case = int(input())
a, b = case//2, case//2
while a > 0:
if prime(a) == True and prime(b) == True:
print(a, b)
break
else:
a -= 1
b += 1
처음에 반으로 나눠서 +-1씩 해주는 방법을 생각했다가 안했는데 다시 생각해보니 그 방법이 맞았었다...