主要就是素数判断,注意一下往前判断的时候加一个>0的条件
#include<iostream>
#include<cmath>
using namespace std;
int N;
bool is_prime(int x){
int k=(int)sqrt(x*1.0);
if(x==0||x==1) return false;
for(int i=2;i<=k;i++){
if(x%i==0) return false;
}
return true;
}
bool is_sex(int x){
if(is_prime(N-6)&&N-6>0){
return true;
}else if(is_prime(N+6)){
return true;
}else{
return false;
}
}
int main(){
cin>>N;
if(is_prime(N)&&is_sex(N)){
printf("Yes\n");
if(is_prime(N-6)&&N-6>0){
printf("%d\n",N-6);
}else if(is_prime(N+6)){
printf("%d\n",N-6);
}
return 0;
}else{
printf("No\n");
}
while(!is_prime(N)||!is_sex(N)){
N++;
}
printf("%d\n",N);
return 0;
}