#include <cstdio>
#include <cmath>
bool isPrime(int p){
if(p <= 1){
return false;
}
if(2 == p){
return true;
}
int sq = (int)sqrt(p * 1.0);
for(int i = 2; i <= sq; ++i){
if(p % i == 0){
return false;
}
}
return true;
}
int main(){
int N;
scanf("%d", &N);
if(isPrime(N)){
if(isPrime(N - 6) || isPrime(N + 6)){
printf("Yes\n");
printf("%d", isPrime(N - 6) ? N - 6 : N + 6);
return 0;
}
}
printf("No\n");
for(int i = N + 1; ; ++i){
if(isPrime(i) && (isPrime(i + 6) || isPrime(i - 6))){
printf("%d", i);
break;
}
}
return 0;
}
题目如下:
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
&spm=1001.2101.3001.5002&articleId=130584984&d=1&t=3&u=25d99a6ab9d340e3affe2c0283e3d03d)
917

被折叠的 条评论
为什么被折叠?



