Baekjoon Online Judge

[python]9020.골드바흐의 추측

kickerLit 2021. 1. 21. 18:16

문제에서 골드바흐 파티션이 여러가지인 경우 두소수의 차이가 가장 작은 것을 출력하라 했다. 즉 입력값이 16일 경우, 16= 11+5 =13+ 3으로 2가지의 골드바흐 파티션이 있는데 11-5<13-3이므로 11 5로 출력해야 한다는 뜻이다. 짝수는 같은 수 2개로 이루어질 수 있다. 무슨 뜻이냐면 예를 들어 4= 2+2, 10=5+5, 12=6+6 이런식으로 말이다. 이것을 이용하여 앞의 수는 1씩 감소시키고, 뒤의 수는 1씩 증가시키면 소수인데 차이가 가장 작은것을 제일 먼저 만나 이를 출력하기만 하면 된다. 그렇게 해서 코드르 짜면

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
def isPrime(num):
    if num==0 or num==1:
        return False
    for i in range(2int(num**0.5)+1):
        if num%i==0:
            return False
    return True
 
test=int(input())
j=0
while j<test:
    up=down=0
    even=int(input())
    j+=1
    up=down=int(even/2)
    while(down!=0):
        if isPrime(up) and isPrime(down): #둘 다 소수일 때
            print(str(down)+" "+ str(up))
            break
        else:
            up+=1
            down-=1
cs

 

www.acmicpc.net/problem/9020

'Baekjoon Online Judge' 카테고리의 다른 글

[python]10814.나이순 정렬  (4) 2021.02.03
[python]6566.애너그램 그룹  (0) 2021.01.27
[python]4948.베르트랑 공준  (0) 2021.01.21
[python]1929.소수 구하기  (0) 2021.01.18
[python]10757.큰 수 A+B  (0) 2021.01.15