서의 공간

[백준] 9020_골드바흐의 추측 본문

Algorithm/백준

[백준] 9020_골드바흐의 추측

홍서의 2021. 2. 3. 07:38

[문제]: 9020번: 골드바흐의 추측 (acmicpc.net)

 

체로 소수를 걸러내는건 간단하다. 

핵심은 만약 가능한 n의 골드바흐 파티션이 여러 가지인 경우 두 소수의 차이가 가장 작아야만 한다.

그렇게 하기 위해 주어진 입력 n의 중간부터 하나씩 작게 세어서 두 소수를 찾는다.

#include <iostream>
using namespace std;

bool che[10001];

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	fill(che, che + 10001, true);
	che[0] = che[1] = false;
	for (int i = 2; i * i <= 10000; ++i) 
		if (che[i])
			for (int j = i * i; j <= 10000; j += i)
				che[j] = false;
	
	int T; 
	cin >> T;
	while (T--) {
		int n;
		cin >> n;
        // 여기가 핵심이다!
		for (int i = n / 2; i >= 2; --i) {
			if (che[i] && che[n - i]) {
				cout << i << ' ' << n - i << '\n';
				break;
			}
		}
	}
	return 0;
}

 

'Algorithm > 백준' 카테고리의 다른 글

[백준] 15649_N과 M (1)  (0) 2021.02.06
[백준] 2447_별 찍기 - 10  (0) 2021.02.06
[백준] 5430_AC  (0) 2021.01.13
[백준] 2217_로프  (0) 2021.01.11
[백준] 1260_DFS와 BFS  (0) 2021.01.06
Comments