一开始自己只考虑了当如果一开始输入的那个数不是性感素数,另一种就不用再判断是否是性感素数,没有考虑清楚情况,然后就是解释一下性感素数是指p为素数但是如果p+6或者p-6都不是素数则p就不是性感素数,否则是的。
ac:
#include <iostream>
#include <math.h>
using namespace std;
int sushu(int n){
// printf("%d\n",n);
if(n<2){
return 0;
}
if(n==2||n==3){
return 1;
}
for(int i=2;i*i<=n;i++){
if(n%i==0){
return 0;
}
}
return 1;
}
int main(){
int n;
scanf("%d",&n);
if(sushu(n)==1&&(sushu(n+6)==1 || sushu(n-6)==1)){
printf("Yes\n");
if(sushu(n-6)==1){
printf("%d\n",n-6);
}
else if(sushu(n+6)==1){
printf("%d\n",n+6);
}
}else{
printf("No\n");
int i;
for(i=n+1;i<=100000000;i++){
if(sushu(i)==1){
if(sushu(i+6)==1||sushu(i-6)==1){
printf("%d\n",i);
break;
}
}
}
}
}