π΅π»ββοΈ κ³¨λλ°νμ μΆμΈ‘
λ°±μ€ Silver1
π μκ³ λ¦¬μ¦
ππ» μλΌν μ€ν λ€μ€μ 체λ [μμ κ²μ¦]μ ν λ μ¬μ©νλ€.
μ΄ λ¬Έμ μ ν΅μ¬μ νΉμ μ«μκ° μμμΈμ§ μλμ§ νλ³μ ν΄μΌνλ€λ κ²μ΄λ€.
n = a+bμΌ λ, b-aκ° μ΅λκ° λλλ‘ μ€μ μ ν΄μΌνλ―λ‘ 2λΆν° n-1κΉμ§ μμ νλ³μ ν΄μΌνλ€.
μ΄ν΄κ° μ½λλ‘ μλ₯Ό λ€μ΄λ³΄κ² λ€.
π μ€κ³
b-aκ° μ΅λλ‘ λλλ‘ νλ €λ©΄ aλ₯Ό 2λΆν° μμν΄μ 골λλ°νμ μΆμΈ‘μ λ§μ‘±μν¬λ STOPμ νλ©΄ λλ€.
λ²μκ° 2~n-1μΈ μ΄μ λ 1μ μ΄μ°¨νΌ μμκ° μλκΈ° λλ¬Έμ΄λ€.
μκ° μ΄κ³Ό μ€κ³
μ²μμλ nμ΄ λ€μ΄μ¬ λλ§λ€ μμ νλ³ ν¨μλ₯Ό κ°λμμΌ λ΅μ μΆλ ₯νλλ‘ νμλλ° κ·Έλ κ² νλ©΄ μκ° μ΄κ³Όκ° λ°μνλ€.
그보λ€λ μ λ ₯ μ ν λ²μκ° μ΄λ―Έ μ ν΄μ ΈμμΌλ 미리 λ°±λ§κΉμ§μ μμνλ³ λ°°μ΄μ μμ±ν λ€μ 골λλ°νμ μΆμΈ‘μ μ§ννλ κ²μ΄ λμ± ν¨μ¨μ μ΄λ€.
π¨π»βπ» CODE
TLE
import sys
input = sys.stdin.readline
# μμ κ²μ¦ ν¨μ - μλΌν μ€ν
λ€μ€μ 체
def is_prime(n):
sieve = [True]*(n+1)
m = int(n**0.5)
for i in range(2,m+1):
if sieve[i] == True:
for j in range(2*i,n+1,i):
sieve[j] = False
return sieve
while True:
n = int(input())
if n == 0:
break
sieve = is_prime(n)
for i in range(2,n-1):
if sieve[i] == True and sieve[n-i] == True:
print("{0} = {1} + {2}".format(n,i,n-i))
break
μ λ΅
import sys
input = sys.stdin.readline
# μμ κ²μ¦ ν¨μ - μλΌν μ€ν
λ€μ€μ 체
def is_prime(n):
sieve = [True]*(n+1)
m = int(n**0.5)
for i in range(2,m+1):
if sieve[i] == True:
for j in range(2*i,n+1,i):
sieve[j] = False
return sieve
sieve = is_prime(1000000)
while True:
n = int(input())
if n == 0:
break
for i in range(2,n-1):
if sieve[i] == True and sieve[n-i] == True:
print("{0} = {1} + {2}".format(n,i,n-i))
break