m1ndy5's coding blog

[수학] 백준 9020번 골드바흐의 추측 with python 본문

알고리즘 with python/수학

[수학] 백준 9020번 골드바흐의 추측 with python

정민됴 2023. 3. 7. 23:02

https://www.acmicpc.net/problem/9020

def primes_10000():
    prime = [1]*10001
    prime[0] = 0
    prime[1] = 0
    for i in range(2, 101):
        j = 2
        while i*j <= 10000:
            if prime[i*j] == 1:
                prime[i*j] = 0
            j += 1
    return prime

t = int(input())
prime_num = primes_10000()
for i in range(t):
    n = int(input())

    a = n//2
    b = a
    while prime_num[a] == 0 or prime_num[b] == 0:
        a -= 1
        b += 1
    print(a, b)

10000까지의 약수를 구하는 것은 어렵지 않았다.
그렇지만 어떻게 조합을 했을 때 최소 차이가 나도록 설계하지? 생각했는데 생각이 안나서 구글링의 힘을 좀 빌렸다ㅎㅋ
짝수기 때문에 만들어야할 수를 절반으로 나눠서 둘다 소수가 될때까지 한쪽은 -1, 한쪽은 +1 해서 맞춰가는 것이었다.
이런 방법이! 세상에 똑똑한 사람들은 정말 많은 것 같다.ㅎ 굿!