GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이

Baekjoon Online Judge 6588번 파이썬

gogi masidda 2022. 7. 22. 17:30

문제 링크
https://www.acmicpc.net/problem/6588

 

6588번: 골드바흐의 추측

각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰

www.acmicpc.net


소수를 판별하는 함수는 저번 1929번 문제의 ‘에라토스테네스의 체’ 를 그대로 가져왔다.

b = number - a를 하고 에라토스테네스의 체 방식을 사용하여 a와 b가 소수인지 판별하였다.

정답 코드

import sys

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

def goldbach(num):
  while True:
    for a in range(1,number):
      b = number - a
      if isPrime(a) and isPrime(b):
        print(f"{number} = {a} + {b}")
        return False
    print("Goldbach's conjecture is wrong.")
    return False

while True:
  number = int(sys.stdin.readline())
  if number == 0:
    break
  else:
    goldbach(number)
728x90