题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
https://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
#include <iostream> #include <vector> using namespace std; bool isSU(int n){ //判断一个数是不是素数 for(int i=2;i<n/2+1;i++){ if(n%i==0){ return false;} } return true; } int main() { int n;//输入一个大于2的偶数 vector<int>a;//记录比n/2小的那个素数 int minpos=0;//记录最小差值的素数对中,小于n/2那个在a中存储的位置 cin>>n; int pos=-1; for(int i=n/2;i>=2;i--){ if(isSU(i)&&isSU(n-i)){//用函数判断一个数是不是素数 a.push_back(i); pos++;//入栈一次记录一次下标,每记录一次下标 都先判断一下最小值是否需要更新 if(abs(n-i-i)<abs(n-a[minpos]-a[minpos])){minpos=pos;} } } cout<<a[minpos]<<endl;//小于等于n/2的那个素数 cout<<(n-a[minpos])<<endl;//做差后,另一个素数一定是大于等于n/2的,一定是升序输出 return 0; }