题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
#include <bits/stdc++.h>
#include <tuple>
using namespace std;
/*
1.保存从[4,1000]的素数到列表,第i个素数是arr[i]
2.从arr中找到两个元素arr[i]和arr[j],使得它们差的绝对值最小
3.时间复杂度是O(n^2),空间复杂度是O(n)
*/
/*
输入一个整数n,选出两个奇数符合下面的条件
1.两个奇数的和等于这个整数
3.检测选出的两个奇数都是否是素数
*/
// 判断参数 x 是不是素数
// 是就返回true 不是返回false
bool isPrimer(int x) {
for (int i = 2;i * i <= x;i++) {
if (x % i == 0) {
return false;
}
}
return true;
}
int main() {
int n;
while (cin >> n) {
auto tp = make_pair(0, 0);
for (int i = n / 2;i >= 2;i--) {
// 这个代码居然也能通过
if (isPrimer(i) && isPrimer(n - i)) {
cout << i << endl << n - i;
break;
}
}
// cout << tp.first << '\n' << tp.second << endl;
}
}
