题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
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; } }