题目
“性感素数”是指形如 (p,p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。现给定一个整数,请你判断其是否为一个性感素数。
输入格式
输入在一行中给出一个正整数 N。
输出格式
若 N 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 N 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。若 N 不是性感素数,则在一行中输出 No,然后在第二行输出大于 N 的最小性感素数。
数据范围
1$\leq$N$\leq$108
输入样例1:
输出样例1:
输入样例2:
输出样例2:
代码:
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; }
|