[백준] 9020 파이썬 (골드바흐의 추측)

노을·2022년 4월 2일
0

Algorithm

목록 보기
21/21
post-thumbnail
post-custom-banner




코드


# 10000이하의 수 중에서 소수인 수들 구하기
list = range(2, 10000)
sosu_list = []
def sosu():
    for i in list:
        if i==2 or i==3:
            sosu_list.append(i)
            continue
        else:    
            for j in range(2, int(i**0.5)+1):
                if i%j==0:
                    break
            else: sosu_list.append(i)  
   
# 골든바흐 수 구하기
def goldbach(n):
    k = n/2
    while True:
        if k in sosu_list and (n-k) in sosu_list:
            print(int(k), int(n-k))
            break
        else:
            k-=1


if __name__ == "__main__":
    sosu()
    test = int(input())
    for i in range(test):
        num = int(input())
        goldbach(num)

먼저 10000 이하의 숫자를 list에 넣고 list에 있는 숫자들 중 소수인 수만 sosu_list에 넣었다.

그리고 골든바흐수를 구하는 함수를 만들었다.
n은 k와 n-k의 합이다.

n은 무조건 짝수이기 때문에 2로 나눠진다.
n을 2로 나누 수를 k라고 가정했을 때,
k와 n-k가 모두 소수라면 그것이 골든바흐의 수이다.

만약 k와 n-k 둘 중 하나라도 소수가 아니면
k을 1씩 줄여가며 반복한다.

post-custom-banner

0개의 댓글