백준|9020번|골드바흐의 추측

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
25/136

문제설명
짝수를 입력받아서 소수 두 개의 합으로 입력받은 짝수를 만들 수 있는 조합중 두 숫자의 차이가 가장 작은 경우를 출력하는 문제입니다.

작동 순서
1. 입력받을 수의 개수를 입력받는다.
2. 짝수들을 입력받는다.
3. 에라토스테네스의 체를 이용하여 소수들을 판별한다.
4. 앞의 소수와 뒤의 소수를 각각 입력받은 짝수*1/2로 지정하고 각각 숫자를 빼고 더해가면서 두 숫자가 모두 소수인 경우를 구하면 출력합니다.

소스코드

import sys
n = int(sys.stdin.readline())
num = []
for i in range(n):
    num.append(int(sys.stdin.readline()))
prime = [False, False]+[True]*9999
for i in range(2, 101):
    if prime[i]:
        j = i*2
        while j <= 10000:
            prime[j] = False
            j += i
for i in range(n):
    for j in range(int(num[i]/2)):
        if prime[int(num[i]/2)-j] and prime[int(num[i]/2)+j]:
            print(int(num[i]/2)-j, int(num[i]/2)+j)
            break

후기
생각보다 쉽게 금방 풀어냈습니다.

profile
INTP 개발자 지망생

0개의 댓글