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 (≤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 <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