티스토리 뷰

<문제 링크>

 

9020번: 골드바흐의 추측

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

www.acmicpc.net

 

<문제 풀이>

def check_prime(a):
    for i in range(2, int(a**0.5) + 1):
        if a % i == 0:
            return False
    if a == 1:
        return False
    return True


T = int(input())

for i in range(T):
    n = int(input())
    for num in range(n // 2, 1, -1):
        if check_prime(num) and check_prime(n - num):
            print(num, n - num)
            break

9020 입출력 예시

*key point: 소수 리스트를 만든 뒤 입력값을 만들 수 있는 소수 조합을 찾고 그 중 두 소수의 차이가 작은 조합을 고르는 직관적인 알고리즘을 구현한 경우 시간 초과가 발생하였다. 실행 시간을 최소화하기 위하여 소수임을 판별해주는 함수를 정의하여 사용하고, 조건에 맞는 소수 조합을 빠르고 간편하게 찾기 위해 입력값 n을 2로 나눈 수에서부터 반복을 시작하였다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함