#include <iostream> #include <vector> #include <cmath> #include <list> using namespace std; bool isPrim(int num){ if(num == 1 || num == 0){ return false; }else if(num == 2){ return true; }else{ for(int i = 2; i <= sqrt(num); ++i){ if(num % i == 0){ return false; // 能够被其中一个整除,就不是素数 } } return true; } } int main(){ int n; cin>>n; vector<int> res; // 存放所有的素数 list<pair<int,int>> res_value; int min = INT32_MAX; for(int i = 0; i < n; ++i){ if(isPrim(i)){ res.push_back(i); // 将n范围内的素数都插入到res中 } } // 找到两个,并且和等于m的素数,差值的绝对值最小的 for(int i = 0; i < res.size(); ++i){ for(int j = i; j < res.size(); ++j){ int sum = res[i] + res[j]; int gap = abs(res[j] - res[i]); if(sum == n && gap < min){ min = gap; res_value.push_front({res[i],res[j]}); } } } auto it = res_value.begin(); cout<<it->first<<endl; cout<<it->second<<endl; return 0; }