acwing每日一题-5

题目

性感素数”是指形如 (p,p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。现给定一个整数,请你判断其是否为一个性感素数。

输入格式

输入在一行中给出一个正整数 N。

输出格式

若 N 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 N 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。若 N 不是性感素数,则在一行中输出 No,然后在第二行输出大于 N 的最小性感素数。

数据范围

1$\leq$N$\leq$108

输入样例1:

1
47

输出样例1:

1
2
Yes
41

输入样例2:

1
21

输出样例2:

1
2
No
23

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
#include<cmath>
using namespace std;
bool isprime(int num){
if(num==1)return false;
if(num==2)return true;
for(int i=2;i<sqrt(num)+1;i++)
if((num%i)==0)return false;
return true;
}
int main(){
long long n;
cin>>n;
if(isprime(n))
if(isprime(n-6)&&n-6>=0){cout<<"Yes"<<endl<<n-6;return 0;}
if(isprime(n+6)){cout<<"Yes"<<endl<<n+6;return 0;}
for(int i=n+1;;i++)
if(isprime(i)&&(isprime(i+6)||(isprime(i-6)&&i-6>=0)))
{cout<<"No"<<endl<<i;return 0;}
return 0;
}