#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不断更新。输出即可参与链接

京公网安备 11010502036488号