#include <iostream> #include <cmath> using namespace std; bool check(int x) { for(int i=2;i<=x/i;i++) { if(x%i==0) return false; } return true; } int main() { int b; cin>>b; //jingen int x1=0,x2=0,mi=2e9; for(int i=b/2;i<=b;i++) { int k=b-i; if(check(k)&&check(i)) { int c=abs(k-i); if(c<mi) mi=c,x1=k,x2=i; } } cout<<x1<<endl<<x2; return 0; }
由题找一对素数,将其相加和为b,且差值最小,首先直接从b/2开始找起,用check函数判断是否为素数,mi记录二者差值,x1,
x2不断更新。输出即可参与链接