题解 | #查找组成一个偶数最接近的两个素数#
查找组成一个偶数最接近的两个素数
http://www.nowcoder.com/practice/f8538f9ae3f1484fb137789dec6eedb9
简单题提交几次才过,第一次通过率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);
}
}