题解 | 查找组成一个偶数最接近的两个素数
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
#include <algorithm>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
static bool isPrime(int x)
{
if(x<2) return false;
if(x==2) return true;
if(x%2==0) return false;
for(int i = 3 ;i <= sqrt(x); i+=2) {
if(x %i == 0) return false;
}
return true;
}
struct minPair{
bool operator() (const pair<int,int> &p1, const pair<int,int> &p2){
return abs(p1.first-p1.second) < abs(p2.first-p2.second);
}
};
int main() {
vector<pair<int,int>> v;
int a;
cin >> a;
for(int i = 2 ;i< a ;i++)
{
int k = 0;
k = a - i;
if(isPrime(i) && isPrime(k)) {
v.emplace_back(i,k);
}
}
if(v.empty())
{
cout << "-1" << endl;
return 0;
}
auto minpair = min_element(v.begin(),v.end(),minPair());
cout << minpair->first << endl;
cout << minpair->second ;
}
// 64 位输出请用 printf("%lld")

查看7道真题和解析