Sexy primes are pairs of primes of the form (p, p+6), so-named since “sex” is the Latin word for “six”. (Quoted from http://mathworld.wolfram.com/SexyPrimes.html)
Now given an integer, you are supposed to tell if it is a sexy prime.
Input Specification:
Each input file contains one test case. Each case gives a positive integer N (≤10^8).
Output Specification:
For each case, print in a line Yes if N is a sexy prime, then print in the next line the other sexy prime paired with N (if the answer is not unique, output the smaller number). Or if N is not a sexy prime, print No instead, then print in the next line the smallest sexy prime which is larger than N.
Sample Input 1:
47
Sample Output 1:
Yes
41
Sample Input 2:
21
Sample Output 2:
No
23
麻烦今年也出这种难度的题,判断一个数和它-6或者+6是否都是素数,如果是,就输出n-6或者n+6
如果不是,就让n++,直到找到自身和-6or+6都是素数的数
#include<cmath>
#include<iostream>
using namespace std;
bool isPrime(int x){
if(x <= 1) return false;
int Sqrt = (int)sqrt(x);
for(int i = 2; i <= Sqrt; i++){
if(x % i == 0) return false;
}
return true;
}
int main(){
int n;
cin>>n;
if(isPrime(n) && (isPrime(n-6) || isPrime(n+6))){
cout<<"Yes\n";
if(isPrime(n-6)) cout<<n-6;
else cout<<n+6;
}
else{
while(!isPrime(n) || !(isPrime(n-6) || isPrime(n+6))) n++;
cout<<"No\n";
cout<<n;
}
return 0;
}