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 (≤108).
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:
47
Sample Output:
Yes
41
思路
模拟题、数学题
cpp代码
#include<iostream>
using namespace std;
int n;
bool check(int x){
if(x<2)return false;
for(int i=2;i<=x/i;i++){
if(x%i==0)return false;
}
return true;
}
int main(){
cin>>n;
if(check(n)&&(check(n+6)||check(n-6))){
puts("Yes");
if(check(n-6))cout<<n-6<<endl;
else cout<<n+6<<endl;
return 0;
}
while(1){
if(check(n)&&check(n+6))break;
if(check(n)&&check(n-6))break;
n++;
}
puts("No");
cout<<n<<endl;
return 0;
}