思路
如果n是性感素数,说明n是素数,并且n−6或者n+6是素数。
如果n−6是素数,直接输出Yes,n−6
如果n+6 是素数,直接输出Yes, n+6
如果n不是性感素数,就从n+1开始遍历,直到找到第一个性感素数,输出即可。
#include<iostream>
#include<cstring>
using namespace std;
bool isPrime(int n){
if(n<=1)return false;
for(int i=2;i<=n/i;i++){
if(n%i==0)return false;
}
return true;
}
int main(){
int n;
cin>>n;
if(isPrime(n)&&(isPrime(n-6)||isPrime(n+6))){
puts("Yes");
if(isPrime(n-6))cout<<n-6;
else cout<<n+6;
}else{
puts("No");
for(int i=n+1;;i++){
if(isPrime(i)&&(isPrime(i-6)||isPrime(i+6))){
cout<<i<<endl;
break;
}
}
}
return 0;
}