๋ฐฑ์ค 17103๋ฒ
์ฝ๋๋ฐํ์ ํํฐ์ ์ ๊ฐฏ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
์ง์ ๊ฐ a๊ฐ ๋ค์ด์ค๋ฉด b + c = a
๊ฐ ๋๋ ๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ฌ (์ฌ๊ธฐ์ b์ c๋ ๋ ๋ค ์์์ฌ์ผ ํ๋ค.)
b์ c์ ๊ฐ์ด ์์๋ง ๋ค๋ฅธ ๊ฐ์ ์ณ์ฃผ์ง ์๋๋ค ex) 3+7 = 10, 7+3 = 10 ์ด๋ด ๊ฒฝ์ฐ ํ๊ฐ๋ก ์นด์ดํธ๋๋ค.
์ฒ์์๋ ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ๊ตฌ์ฑํ์๋๋ฐ ์๊ฐ์ด๊ณผ..๊ฐ ๋ฐ์ํ์๋ค.
์ฝ๋๋ ๋๋ฆฌ์ง๋ง ๋ง๋ ๋ต์ ์ถ๋ ฅํ๋ ์ฝ๋์
๋๋ค.
import sys
input = sys.stdin.readline
t = int(input())
def sosu(n):
sqrt = int(n ** (0.5)) + 1
count = 0
for i in range(2, sqrt):
if n % i == 0:
return False
return True
for _ in range(t):
n = int(input())
if n == 2:
print(0)
continue
half = n//2
count = 0
for i in range(2, half+1):
if sosu(i) and sosu(n-i):
count += 1
print(count)
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ๊ตฌ๊ธ๋ง์ ํ์๊ณ ์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํธ๋ ๋ฐฉ๋ฒ์ ์๊ฒ๋์์ต๋๋ค.
์๋ผํ ์คํ
๋ค์ค์ ์ฒด
์์๋ฅผ ๊ตฌํ๋ฉด ๊ทธ์ ๋ฐฐ์ ๋๋ ์๋ค์ ์ ๊ฑฐํ์ฌ ๋๋จธ์ง ์๋ค์์ ์์๋ค์ ๊ตฌํ ์ ์๋ค.
import sys
input = sys.stdin.readline
t = int(input())
t_li = []
max_t = -1
for _ in range(t):
n = int(input())
t_li.append(n)
if max_t < n:
max_t = n # ์
๋ ฅ๊ฐ์ค์ ๊ฐ์ฅ ํฐ ์
sosu_li = [True] * (max_t + 1) # 0 ~ ์ต๋๊ฐ๊น์ง์ ์์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฐฐ์ด ์ ์ธ
sosu_li[1] = False # 1์ผ ๊ฑ์ฐ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ฝ์์ด๋ False ๋ฃ์
def sosu(n):
global sosu_li
sqrt = int(n ** (0.5)) + 1
count = 0
for i in range(2, sqrt): # i๊ฐ i์ ๋ฐฐ์์ธ ๊ฒ์ ์ฐพ์ False๋ก ๋ณ๊ฒฝ
if sosu_li[i]:
for j in range(i+i, max_t+1, i):
sosu_li[j] = False
# ์์์ ๊ฐ์ True์ธ ๊ฒ์ผ๋ก ๋จ๋๋ค.
sosu(max_t)
for n in t_li:
count = 0
for i in range(2, (n//2) + 1): # ์์๋ง ๋ค๋ฅธ ๊ฐ๋ค์ ๋ชฐ๋ผ๋ ๋๊ธฐ์ ๋ฐ๊น์ง๋ง ๊ตฌํ๋ฉด๋๋ค.
if sosu_li[i] and sosu_li[n-i]:
count += 1
print(count)