2보다 큰 모든 짝수는 그 짝수보다 작은 두 수소의 합으로 이루어져있다.
1. 에라토스테네스의 체를 이용해 입력한 값보다 작은 소수 조합 구하기
2. n = (입력한 값 / 2), 0 <= i <= n이라고 할 때, 두 소수는 (n + i), (n - i)이다.
#include <iostream>
#include <cmath>
using namespace std;
void init(bool arr[], int num){
for(int i = 0; i <= num; i++)
{
if(i == 0 || i == 1){
arr[i] = false;
}
else{
arr[i] = true;
}
}
}
int main()
{
int size;
cin >> size;
int num;
bool arr[10001];
for(int i = 0; i < size; i++)
{
cin >> num;
init(arr, num);
for(int j = 2; j <= sqrt(num); j++){
if(!arr[j])
continue;
else
for(int k = j * j; k <= num; k+=j) {
arr[k] = false;
}
}
for(int j = 0; j <= num / 2; j++)
{
bool x = arr[num / 2 - j];
bool y = arr[num / 2 + j];
if(x && y){
cout << num / 2 - j << " " << num / 2 + j << endl;
break;
}
}
}
}