반응형
1. 문제
https://www.acmicpc.net/problem/9020
2. 코드
import math
sosu = []
for i in range(2, 10000):
flag = 0
temp = int(math.sqrt(i))
for j in range(2, temp+1):
if i%j == 0:
flag = 1
if flag == 0:
sosu.append(i)
n = int(input())
for i in range(n):
num = int(input())
for j in range(num//2, 1, -1):
if (j in sosu) and (num-j in sosu):
print(j, num-j)
break
3. 알고리즘
1) 1~10000까지 모든 소수를 sosu라는 리스트에 저장
2) 숫자가 입력되면 num//2까지 돌면서 j와 num-j가 모두 소수 리스트에 있는지 확인. 이 때, 두 수의 간격이 좁은 것부터 구하기 위해 num//2부터 거꾸로 내려간다. 둘다 소수 리스트에 있으면 j + (num-j) = num 이ㅣ고, j와 num-j 모두 소수이므로 조건 만족.
3) 끝
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 1002번 - 터렛 (파이썬) (feat. 원) (0) | 2021.11.08 |
---|---|
[백준] 3053번 - 택시 기하학 (0) | 2021.11.08 |
[백준] 4948번 - 베르트랑 공준 (파이썬) (0) | 2021.11.08 |
[백준] 11650번 - 좌표 정렬하기 (파이썬) (feat. lambda) (0) | 2021.11.08 |
[백준] 1463번 - 1로 만들기 (파이썬 코드) (feat. DP) (0) | 2021.11.08 |