728x90
https://www.acmicpc.net/problem/9020
9020번: 골드바흐의 추측
1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아
www.acmicpc.net


728x90
내 생각
num이 주어졌을 때, half = num/2이 소수라면 답은 half이다.
하지만 half이 소수가 아니라면 half=half-1 한다.
half가 소수가 될 때까지 위의 과정을 반복한다.
half가 소수가 됐을 때, num-half도 소수라면 답은 half
소수가 아니라면 위의 과정을 다시 반복한다.
이렇게 half와 num-half가 둘 다 소수일 때까지 반복한다.
def isPrime(n): if n<2: return False elif n ==2: return True else: for i in range(2, int(n/2)+2): if (n%i == 0): return False return True n = int(input()) num = [] ans = [] for i in range(0, n): num.append(int(input())) ans.append(0) for i in range(0, n): half = int(num[i] / 2) for j in range(half, 0, -1): if isPrime(j): if isPrime(num[i] - j): ans[i]=j break for i in range(0, n): print(ans[i], num[i]-ans[i])
728x90
'Problem Solving > BOJ' 카테고리의 다른 글
[백준, BOJ 2444] 별 찍기 - 7 (python) (0) | 2021.05.10 |
---|---|
[백준, BOJ 10870] 피보나치 수 5 (python) (0) | 2021.05.10 |
[백준, BOJ 2747] 피보나치 수 (python) (0) | 2021.05.10 |
[백준, BOJ 2920] 음계 (python) (0) | 2021.05.10 |
[백준, BOJ 2750] 수 정렬하기 (python) (0) | 2021.05.10 |