题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
查找组成一个偶数最接近的两个素数
/* 2022年09月21日 11:43:09 穷举,挨个判断能组成 n 两个素数 比较这两个素数差值绝对值是否最小,不断更新min 随时要保存好这2个素数 */ #include <iostream> #include <math.h> #include <vector> using namespace std; bool IsPrime(int x){ for(int i = 2; i <= sqrt(x); i++){ if(x % i == 0) return false; } return true; } int main() { int n; cin >> n; vector<int> v(2, 0); int min = INT16_MAX; for(int i = 2; i < n; ++i){ // 穷举 if(IsPrime(i) && IsPrime(n - i)){ // 保存最接近的2个素数 if(abs(n-i-i) < min){ v[0] = i, v[1] = n - i; // 保存起来 min = abs(n-i-i); } } } cout << v[0] << endl; cout << v[1] << endl; return 0; }
/* 2022年09月21日 11:43:09 从偶数中间开始判断,这样的2个素数差值绝对就是最小的 不需要一个min随时去更新了 */ #include <iostream> #include <math.h> using namespace std; bool IsPrime(int x) { for (int i = 2; i <= sqrt(x); i++) { if (x % i == 0) return false; } return true; } int main() { int n; cin >> n; for (int i = n/2; i >= 0; --i) { // 从中间开始判断 if (IsPrime(i) && IsPrime(n - i)) { cout << i << endl; cout << n - i << endl; break; } } return 0; }