๋ฐฑ์ค 9020๋ฒ
์ฝ๋๋ฐํ์ ์ถ์ธก
๋ชจ๋ ์ง์๋ ๋ ์์์ ํฉ์ผ๋ก ๋ํ๋ผ ์ ์๋ค๋ ์ถ์ธก์
๋๋ค.
์ด ๋ฌธ์ ๋ ํด๋น ์ถ์ธก์ด ๋ง๋์ง ํ์ธํ๋ ์ฝ๋๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
์ฒ์์ ๋ฌธ์ ๋ฅผ ํ์์ ๋ ๊ณ์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ์ฌ ํด๊ฒฐํ์ง ๋ชปํ์์ต๋๋ค.
(์๋๋ ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ์ฝ๋)
import sys
input = sys.stdin.readline
primes = {}
def isPrime(val):
count = 0
num = 2
while num * num <= val:
if (val % num) == 0:
count += 1
num += 1
if count == 0:
return True
else:
return False
t = int(input())
input_arr = []
primes = {}
max_val = 0
for val in range(2, 10000):
if isPrime(val):
primes[val] = val
sosu = primes.keys()
for _ in range(t):
check = True
n = int(input())
a = 0
b = val
for num1 in sosu:
if num1 > (n // 2):
break
if num1 in primes:
for num2 in sosu:
if (num2 in primes) and (num1 + num2 == n):
if abs(num1 - num2) < abs(a-b):
a = num1
b = num2
print(a, b)
๋ฏธ๋ฆฌ ์ ๊ณต๋๋ ์๊น์ง์ ๋ฒ์์ ์์๊ฐ ๋ค์ด์๋ ๋์ ๋๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ์ด๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐํ๋ ํ์ด์์ต๋๋ค.
ํ์ง๋ง ์๊ฐ์ด๊ณผ์ ๋ฌธ์ ๊ฐ ์๊ฒผ๊ณ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฒฐ๊ตญ ๊ตฌ๊ธ๋งํ์ฌ ํด๊ฒฐํ์์ต๋๋ค.
(์๋๋ ์๊ฐ์ด๊ณผ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ฝ๋)
import sys
def isPrime(val):
count = 0
num = 2
while num * num <= val:
if (val % num) == 0:
count += 1
num += 1
if count == 0:
return True
else:
return False
input = sys.stdin.readline
n = int(input())
for _ in range(n):
num = int(input())
half = left = num//2 # ์
๋ ฅ์ผ๋ก ๋ค์ด์จ ์์ ๋ฐ์ผ๋ก ๋๋
for right in range(half, num):
# ์ค๊ฐ๋ถํฐ ๋๊น์ง ๋ฐ๋ณต๋ฌธ์ ๋๋ฉด ๋ ์์ฐจ๊ฐ ์ ์ผ ์์ ์๋ถํฐ ์์๋ฅผ ์ฐพ๊ธฐ์์ํ๋ค.
if isPrime(left) and isPrime(right):
print(left, right)
break
left -= 1