N์ด 2์ ๋ฐฐ์์ธ๋ฐ๋ค, N์ ๋ฒ์๋ ๋ง๋งํด์ 2~n๊น์ง 2์๋ฐฐ์๋ง ๋ชจ๋ ์์๋ฅผ ๊ตฌํด ์ ์ฅํด๋๊ณ ,
abs(์ ๋๊ฐ)ํจ์๋ก N์ ์์๋ค์ ๋น๊ตํ๋ฉด์ ์ถ๋ ฅํ ์๊ฐ์ ํ๋ฉด ํฐ ์ฝ ๋ค์น๋ค...๐คฆ๐ปโโ๏ธ
๋ด ํฌ์คํ
: [Python] ๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ 4948 - ๋ฒ ๋ฅดํธ๋ ๊ณต์ค
์ด์ ํฌ์คํ
์์ ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒฝํ์ผ๋ก๋ถํฐ ์์๋ฅผ ๋ฆฌ์คํธ์ ์ ์ฅํด๋๋ ๋ฐฉ๋ฒ์ ๋ ์ฌ๋ ค,
์๊ธฐ ํ์ด์ฒ๋ผ ํด๊ฒฐํ๋ ค๊ณ ํ์ผ๋ ๋ ๋ค์ ์๊ฐ์ด๊ณผ์ ์ง๋ฉดํ๋ค๐ญ
๐๐ป์ํ์ ์ผ๋ก ์ ๊ทผํ์
n์ ์
๋ ฅ๋ฐ๋ a,b์ n//2๋ฅผ ๊ฐ๊ฐ ์ ์ฅํ์ฌ prime(a)์ prime(b)๊ฐ ๋ ๋ค ์์์ด๋ฉด ์ถ๋ ฅ,
์์๊ฐ ์๋๋ฉด a--, b++ํ๋ฉฐ ๋ค์ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ํ์ด๋ณด์
a,b ์ด๊ธฐ๊ฐ์ n//2์ผ๋ก ์ง์ ํ ์ด์ = n์ด 10์ธ ๊ฒฝ์ฐ 5,5๊ฐ ์ ์ผ ์ฐจ์ด๊ฐ ์์ผ๋๊น
import sys
input = sys.stdin.readline
t = int(input().rstrip())
def prime(n):
for i in range(2,int(n**0.5)+1):
if n % i == 0:
return False
return True
for _ in range(t):
n = int(input().rstrip())
a,b = n//2, n//2
while a > 0:
if prime(a) and prime(b): #๋ ๋ค True(์์)์ธ ๊ฒฝ์ฐ
print(a, b)
break
else:
a -= 1
b += 1
โ์ด ์ฝ๋๊ฐ ํจ์จ์ ์ธ ์ด์
๐๐ป ๋ชจ๋ ์ผ์ด์ค์ prime()์ ์ ์ฅํ๊ฒ ๋ง๋๋๊ฒ ๋ฌธ์ ์ ํจ์ ์ธ๋ฐ,
์ ์ฝ๋๋ a,b๋ง prime()์ ํธ์ถํ์ฌ ๋ ๋ค True๋ฅผ ๋ฐํํ ๋๋ง ์ถ๋ ฅํ๋ค.
(๋ชจ๋ ์ผ์ด์ค๋ฅผ prime()ํ๋ฉด n๋ฒ / a,b๋ง prime()ํ๋ฉด n/2๋ฒ๋ง ํธ์ถํ๊ฒ๋จ!)
import sys
input = sys.stdin.readline
t = int(input().rstrip())
def prime(n):
for i in range(2,int(n**0.5)+1):
if n % i == 0:
return False
return True
for _ in range(t):
n = int(input().rstrip())
a,b = n//2, n//2
while a > 0: #a๋ฅผ a--ํด๊ฐ๋ฉด ๊ฒฐ๊ตญ 0์ ๋๋ฌํ ํ
๋๊น 1์ด ๋ ๋๊น์ง๋ง ์คํ
if prime(a) and prime(b): #a,b ๋ค True์ด๋ฉด ์ถ๋ ฅ
print(a, b)
break
else: #ํ๋๋ผ๋ False์ด๋ฉด a--, b++ํ ๋ค์ ๊ฒ์ฌ
a -= 1
b += 1
โป์ด๊ธฐ ์๊ณ ๋ฆฌ์ฆ
import sys
input = sys.stdin.readline
t = int(input().rstrip())
def prime(n):
res = []
res_prime = ''
for num in range(n):
err = 0
for i in range(2,int(num**0.5)+1):
if num%i == 0:
err += 1
if err == 0:
res.append(num)
cnt = max(res)-min(res)
for a in res:
for b in res:
if a+b == n:
if abs(a-b) < cnt:
cnt = abs(a-b)
res_prime = str(a)+' '+str(b)
else:
pass
return res_prime
for _ in range(t):
n = int(input().rstrip())
print(prime(n))
โ๋ด ์๊ณ ๋ฆฌ์ฆ์ด ํ๋ฆฐ ์ด์
ํ๋ฆฌ์ง์์๋ค. ์ ๋ต์ด๋ค.
๊ทธ๋ฌ๋ n์ด ์
๋ ฅ๋ ๋๋ง๋ค ๋ชจ๋ ์์๋ฅผ ๊ตฌํ์ฌ list(res)์ ์ ์ฅํ๊ณ ,
res๋ฅผ ๋ค์ ์ ๋๊ฐ์ ๋น๊ตํ๋ฉด์ prime()์์์ ๋ถํ์ํ for/if๋ฌธ ๋์์ด ๋ง๊ธฐ ๋๋ฌธ์
์๊ฐ์ด๊ณผ๋ฅผ ๋ฐ์์์ผฐ๋ค
์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ณผ์ ์์ O(N)๋ฅผ ์๊ฐํ๋ ๊ฒ์ ์ด์ ๋น์ฐํ๋ค
'์ ์ฒด ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ป๊ฒ ๋์ํ ์ง / ๋์ํ๋ฉด์ ๋ถํ์ํ ๊ณ์ฐ์ ์๋์ง'
ํ์ธํ๋ ๊ณผ์ ์ด ๋งค์ฐ ์ค์ํ๋ค
์ด๋ค ๊ฒฝ์ฐ๋ ์ ์ฒด ๊ณผ์ ์ ๋ค ๊ณ์ฐํ์ฌ ์ ์ฅํ๊ณ
๊ทธ๊ฒ์ ๋ฝ์ ์ฐ๋ ๊ฒ์ด ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ๋๊ฒ ์ง๋ง,
๋ ์ด๋ค ๊ฒฝ์ฐ๋ ์ ์ฒด ๊ณผ์ ์ ๋ค ๊ณ์ฐํ๋ ๊ฒ๋ณด๋ค
ํ์ํ ๊ฒฝ์ฐ๋ง ๊ณ์ฐํ๋ฉฐ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํด๋ด๋ ๊ฒ์ด ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ์ ์๋ค....