其他分享
首页 > 其他分享> > 2019三月PAT甲级 7-1 Sexy Primes

2019三月PAT甲级 7-1 Sexy Primes

作者:互联网

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 (≤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 <iostream>
#include <cstdio>
#include <sstream>
#include <vector>
#include <string>
#include <set>
#include <queue>
#include <map>
#include <unordered_map>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <functional>
using namespace std;

bool isPrime(int n) {
	if (n <= 1) return false;
	int sqr = (int)sqrt(n);
	for (int i = 2; i <= sqr; ++i) {
		if (n % i == 0) return false;
	}
	return true;
}

bool isSexyPrime(int n) {
	return isPrime(n) && (isPrime(n - 6) || isPrime(n + 6));
}

int getNum(int n) {
	if (isPrime(n) && isPrime(n - 6)) {
		return n - 6;
	}
	else if (isPrime(n) && isPrime(n + 6)) {
		return n + 6;
	}
	else {
		while (!isSexyPrime(n)) ++n;
		return n;
	}
}
int main() {
	int n;
	cin >> n;
	cout << (isSexyPrime(n) ? "Yes" : "No") << endl;
	cout << getNum(n) << endl;

	return 0;
}

 

标签:prime,PAT,Sample,2019,Sexy,print,sexy,include,Input
来源: https://blog.csdn.net/chaonan_shen/article/details/100044019