题解 | 查找组成一个偶数最接近的两个素数
#include <climits>
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> num;
for (int i = 2; i < n; i++) {
int yes = 1;
for (int j = 2; j <= i; j++) { //找到所有质数
if (j != i && j != 1 && i % j == 0) {
yes = 0;
break;
}
}
if (yes) num.push_back(i);
}
int d = INT_MAX;
int n1, n2;
for (int i = 0; i < num.size(); i++) { //在质数中遍历找到距离最近且和等于输入的数的两个数
for (int j = i; j < num.size(); j++) {
if (num[i] + num[j] == n && d > abs(num[i] - num[j])) {
d = abs(num[i] - num[j]);
n1 = i;
n2 = j;
}
}
}
cout<<num[n1]<<endl<<num[n2];
}
// 64 位输出请用 printf("%lld")