优化思路:因为差值最小的两个数一定集中在中间,所以可以直接从中间开始分奇数个和偶数个来讨论
#include <iostream>
using namespace std;
int isPrime(int num){
for(int i=2;i*i<=num;i++){
if(num%i==0)
return false;
}
return true;
}
int main() {
int n;
while(cin>>n){
int min=n;
int ans1,ans2;
for(int i=2;i<=n/2;i++){
for(int j=n-i;j>=i;j--){
if(i+j==n&&isPrime(i)&&isPrime(j)){
if(j-i<min){
ans1=i;
ans2=j;
min=j-i;
break;
}
}
}
}
cout<<ans1<<endl;
cout<<ans2<<endl;
}
}
// 64 位输出请用 printf("%lld")



京公网安备 11010502036488号