π‘ 쑰건
- 골λλ°νμ μΆμΈ‘: 2λ³΄λ€ ν° μ§μλ λ μμμ ν©μΌλ‘ λνλΌ μ μλ€.
- μ§μ Nμ λ μμμ ν©μΌλ‘ λνλ΄λ ννμ 골λλ°ν νν°μ
μ΄λΌκ³ νλ€.
μ§μ Nμ΄ μ£Όμ΄μ‘μ λ, 골λλ°ν νν°μ
μ κ°μλ₯Ό ꡬν΄λ³΄μ. λ μμμ μμλ§ λ€λ₯Έ κ²μ κ°μ νν°μ
μ΄λ€.
- 첫째 μ€μ ν
μ€νΈ μΌμ΄μ€μ κ°μ T (1 β€ T β€ 100)κ° μ£Όμ΄μ§λ€.
κ° ν
μ€νΈ μΌμ΄μ€λ ν μ€λ‘ μ΄λ£¨μ΄μ Έ μκ³ , μ μ Nμ μ§μμ΄κ³ , 2 < N β€ 1,000,000μ λ§μ‘±νλ€.
- μ μλ‘ , μμνλ³, μλΌν μ€ν
λ€μ€μ 체 μ νμ λ¬Έμ
π₯ μμ€ μ½λ
from sys import stdin
def prime_list(n):
sieve = [False, False] + [True] * n
m = int(n ** 0.5)
for i in range(2, m + 1):
if sieve[i]:
for j in range(i + i, n, i):
sieve[j] = False
return sieve
prime_nums = prime_list(10 ** 6)
for _ in range(int(stdin.readline())):
cnt = 0
num = int(stdin.readline())
for i in range((num // 2) + 1):
if prime_nums[i] and prime_nums[num - i]:
cnt += 1
print(cnt)
π μμ λ° μ€νκ²°κ³Ό
μμ
5
6
8
10
12
100
μ€νκ²°κ³Ό
1
1
2
1
6
β¨οΈ λ¬Έμ νμ΄
- μμνλ³ λ¦¬μ€νΈλ₯Ό λ§λ€μ΄ λ°ννλ ν¨μλ₯Ό ν΅ν΄μ μμ 리μ€νΈλ₯Ό μ»λλ€.
- κ° ν
μ€νΈ μΌμ΄μ€λ§λ€ μ
λ ₯λ°μ μ«μ num // 2 + 1μ ν΄λΉνλ μ«μκΉμ§ μννλ©΄μ 골λλ°ν νν°μ
μ μλ₯Ό μΈμ΄ μΆλ ₯νλ€