알고리즘/백준

백준 9020: 골드바흐의 추측 (Python)

sssbin 2021. 9. 1. 15:26

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

 

9020번: 골드바흐의 추측

1보다 큰 자연수 중에서  1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아

www.acmicpc.net

 

처음 코드 - 또 시간 초과,,,,,,,,

숫자를 처음부터 넣어서 차이값을 비교했었다

 

num = []

for i in range(2, 10000):
    cnt = 0

    for p in range(2, int(i**0.5)+1):
        if i % p == 0:
            cnt += 1
            break

    if cnt == 0:
        num.append(i)

t = int(input())

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

    for j in num:
        if j in range(n//2+1):
            if n - j in num:
                if n - j - j < d:
                    d = n - j - j
        else:
            break

    print((n-d)//2,n-(n-d)//2)

 

이번엔 그래서 아예 중간값부터 넣었다

그러면 차이가 가장 작은 것부터 시작하니까 차이값을 비교할 필요가 없다!

 

num = []

for i in range(2, 10000):
    cnt = 0

    for p in range(2, int(i**0.5)+1):
        if i % p == 0:
            cnt += 1
            break

    if cnt == 0:
        num.append(i)

t = int(input())

for i in range(t):
    n = int(input())
    a = n//2
    b = a

    while a > 0:
        if a in num and b in num:
            print(a, b)
            break
        else:
            a -= 1
            b += 1