7-1 Sexy Primes

 

7-1 Sexy Primes 

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

 

#include
using namespace std;
bool isprime( int n ){
	 if( n<=1 )
	   return false;
	 for( int i=2;i*i<=n;i++){
	 	  if( n%i == 0 )
	 	    return false;
	 }  
	 return true;
}
int main(void){
	int n,t;
	scanf("%d",&n);
 
	t=n;
	if( isprime(n) && isprime(n-6) ){
		printf("Yes\n");
		printf("%d\n",n-6);
	} 
	else if( isprime(n) && isprime(n+6)){
		printf("Yes\n");
		printf("%d\n",n+6);
	}
	else {
		while( ++n ){
			   if( isprime(n) && isprime(n-6) ){
		           printf("No\n");
		           printf("%d\n",n);
		           return 0;
	           } 
	           else if( isprime(n) && isprime(n+6) ){
		           printf("No\n");
	 	           printf("%d\n",n);
	 	           return 0;
	           }
		}
	}
} 

 

你可能感兴趣的:(PAT甲级)