越是接近它的话就从他的中间往两边找,这样就可以找到了,一个一个去测,这里数据有一个比较难的地方就是没有给到确定的数据范围,所以每次写的时候数组都是开到一万以上的

#include<stdio.h>
bool prime[10005];
void isprime(){
    for(int i=2;i<=10000;i++){
        prime[i]=1;
    }
    for(int i=2;i<=10000;i++){
        if(prime[i]==1){
            for(int j=2*i;j<=10000;j=j+i){
                prime[j]=0;
            }
        }
    }
} 
int main(){
    int n,mid;
    isprime();
    while(scanf("%d",&n)!=EOF){
        mid=n/2;
        for(int i=mid;i>=2;i--){
            if(prime[i]==1&&prime[n-i]==1){
                printf("%d\n%d\n",i,n-i);
                break;
            }
        }
    }
    return 0;
}