7-1 Sexy Primes (20 分)
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 1:
47
Sample Output 1:
Yes
41
Sample Input 2:
21
Sample Output 2:
No
23
完整代码
#include<bits/stdc++.h>
using namespace std;
bool isprime(int x){
if(x<=1) return false;
for(int i=2;i*i<=x;i++){
if(x%i==0) return false;
}
return true;
}
bool issix(int n){
if(isprime(n)){
if(isprime(n-6)){
return true;
}
if(isprime(n+6)){
return true;
}
}
return false;
}
int main(){
int n,i;
cin>>n;
if(isprime(n)){
if(isprime(n-6)){
cout<<"Yes"<<endl;
cout<<n-6;
return 0;
}
if(isprime(n+6)){
cout<<"Yes"<<endl;
cout<<n+6;
return 0;
}
}
n++;
while(!issix(n)) n++;
cout<<"No"<<endl;
cout<<n;
return 0;
}