Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 운체 1주차
- c언어 기본
- python자료형
- DP
- 데베시 1주차
- git기초
- 자료구조
- 참고X
- python기본
- 파이썬 알고리즘 인터뷰
- c언어
- 스택
- git 오류
- #코린이 #코딩 #할 수 있다
- 백준
- git오류
- 최단거리
- 4장
- 인텔리제이
- 1주차(1)
- Workbench
- python기초
- 그리디
- Git
- 도커
- 코테
- 인스타
- c언어 제어문
- 5장
- 코딩테스트
Archives
- Today
- Total
하루살이 개발자
[BaekJoon 9020번] 골드바흐의 추측 문제(Python) 본문
골드바흐의 추측 문제입니다.
문제링크: https://www.acmicpc.net/problem/9020
9020번: 골드바흐의 추측
1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아
www.acmicpc.net
풀이
소수 찾는 알고리즘인 에라토스테네스의 채 알고리즘 이용
Code
from itertools import combinations, product
# 소수 찾는 알고리즘(에라토스테네스의 체)
def prime_list(n):
# 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
sieve = [True] * n
m = int(n ** 0.5)
for i in range(2, m + 1):
if sieve[i] == True: # i가 소수인 경우
for j in range(i+i, n, i): # i이후 i의 배수들을 False 판정
sieve[j] = False
# 소수 목록 산출
return [i for i in range(2, n) if sieve[i] == True]
result = []
result = 0
j1 = 0
# 두 소수의 합 = n
def sum(n):
c = []
a = []
b = []
li = prime_list(n) # 소수
com = [i for i in combinations(li,2)]
for i in range(len(li)):
A = li[i]
com.append((A,A))
for i in range(len(com)):
if (com[i][0] + com[i][1]) == n:
a.append(com[i][0])
b.append(com[i][1])
for j in range(len(a)):
c.append(b[j] - a[j])
result = min(c)
for j in range(len(a)):
if result == c[j]:
j1 = j
#print("j1", j1)
return [a[j1], b[j1]]
for _ in range(int(input())):
n = int(input())
print(" ".join(map(str,sum(n))))
'코딩테스트' 카테고리의 다른 글
[BaekJoon 2667번] 단지번호붙이기 문제(Python) (0) | 2022.02.23 |
---|---|
[BaekJoon 1260번] DFS와 BFS 문제(Python) (0) | 2022.02.23 |
[BaekJoon 4948번] 베르트랑 공준(Python) (0) | 2022.02.20 |
[BaekJoon 1717번] 집합의 표현 문제(Python) (0) | 2022.02.20 |
[코딩테스트] 5. 다이나믹 프로그래밍(2) - 문풀 (0) | 2022.02.16 |