[백준 문제] P6588 골드바흐의 추측


[백준 문제] P6588-골드바흐의 추측

  • 의문점 : 왜 내껀 시간 초과일까?
  • 내 풀이 문제점 고찰 :
    1. 나중에….

내 풀이

# 시간 초과인 내 풀이....답은 맞자나요....백준님........

n = 1
while n != 0 :
    arr = []
    minu = []

    n = int(input())
    # n이 0이면 멈추기
    if n == 0 :
        break
    # n보다 작은 소수 찾기
    a = [False,False] + [True]*(n-1)
    primes=[]
    
    for i in range(2,n+1):
        if a[i]:
            primes.append(i)
        for j in range(2*i, n+1, i):
            a[j] = False

    # x2-x1이 가장 큰 소수 찾기
    for i in primes :
        for j in primes :
            if i+j == n :
                arr.append([i,j])
                minu.append(j-i)
    x1 = arr[minu.index(max(minu))][0];
    x2 = arr[minu.index(max(minu))][1];
    print(str(n)+" = "+str(x1)+" + "+str(x2))
    

                
8
8 = 3 + 5
10
10 = 3 + 7
0

출처1 : BOJ 6588 · 골드바흐의 추측

MAX = 1000000
prime = [False for _ in range(MAX+1)]

for i in range(2, MAX+1):
    if i*i > MAX:
        break
    if prime[i] is False:
        for j in range(i*i, MAX+1, i):
            prime[j] = True

while True:
    n = int(input())
    if n is 0:
        break
    for i in range(2, MAX+1):
        if prime[i] is False:
            j = n - i
            if prime[j] is False:
                print(n, "=", i, "+", j)
                break
8
8 = 3 + 5
0





© 2018. by statssy

Powered by statssy