#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; // 判断一个 数 是否是素数 static bool isPrimeNmber(int n) { bool isPrime = true; for (int i = 2; i <= n / 2; i++) { if (n % i == 0) { isPrime = false; break; } } return isPrime; } // 计算出 2 到 n的所有素数 static vector<int> getAllPrimeNumber(int n) { vector<int> arr; for (int i = 2; i <= n; i++) { if (isPrimeNmber(i)) { arr.push_back(i); } } return arr; } int main() { int n; while (cin >> n) { vector<int> arr = getAllPrimeNumber(n); map<int, vector<pair<int, int>>> dict; for (auto i : arr) { int num = n - i; int dism = num - i; if (num < i || dism < 0)break; if (find(arr.begin(), arr.end(), num) != arr.end()) { dict[dism] = { {i, num} }; } } /*for (auto k : dict) { int key = k.first; const auto& vec = k.second; for (auto k : vec) cout << k.first << " - " << k.second; }*/ auto first_element = dict.begin(); const auto& first_value = first_element->second; for (auto p : first_value) { cout << p.first << endl; cout << p.second << endl; } } return 0; }