简单题提交几次才过,第一次通过率42%,第二次81%,第三次100%。总结就是情况没有考虑全面,提交看到没通过的测试用例才恍然大悟,做题还是得想多一点才行。

#include<stdio.h>

int isPnumber(int n){
    for(int i=2;i<n;i++){
        if(n%i==0) return 0;
        else if(i==n-1) return n;
    }return 0;  //for循环内是条件分支时需要在循环外加上return出口,返回值可以是任意值代表异常,否则编译器会警告,因为循环不可预测,需要正常出口和异常出口。
}

int main(){
    int n;
    while(~scanf("%d",&n)){
        if(n==4) { printf("2\n2\n"); break; }  //特殊情况直接输出结果
        int mid=n/2;
        int low=0,high=0;
        for(int j=1;(low==0)||(high==0)||(low+high!=n);j++){
             if(isPnumber(mid-j)) low=mid-j;
             if(isPnumber(mid+j)) high=mid+j;
        }
        if(isPnumber(mid))
            printf("%d\n%d\n",mid,mid);   //偶数的中间数为刚好素数的情况

        else printf("%d\n%d\n",low,high);
    }
}