✨✨
💬:目前是一名在校学生,今天是第一篇发文,还请多多指教💜💜
💟:打算更新数据结构与算法的内容,以此来督促自己要持续学习哈哈👻👻
💜:希望我们一起成长~✨✨
“性感素数 ”是指形如 (p,p+6) 这样的一对素数。
之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。
现给定一个整数,请你判断其是否为一个性感素数。
输入格式
输入在一行中给出一个正整数 N。
输出格式
若 N 是一个性感素数,则在一行中输出 Yes,并在第二行输出与 N 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。
若 N 不是性感素数,则在一行中输出 No,然后在第二行输出大于 N 的最小性感素数。
数据范围
1≤N≤108
输入样例1:
47
输出样例1:
Yes
41
输入样例2:
21
输出样例2:
No
23
⭐思路:
- 我刚看一遍题是,感觉要先判断素数
- 如果是素数,在判断n+6 或者n-6是不是素数,是的话输出Yes,并输出n-6或者n+6
- 如果不是素数,输出No,再往上加,直到这个数满足n和n-6为素数,或者n与n+6为素数
判断素数:
//判断素数
bool prime(int n){
if (n <= 1){
return false;
}
for (int i = 2;i <= (int)sqrt(n);i++){
if (n%i == 0){
return false;
}
}
return true;
}
完整代码实现:
#include<iostream>
#include<cmath>
using namespace std;
//判断素数
bool prime(int n){
if (n <= 1){
return false;
}
for (int i = 2;i <= (int)sqrt(n);i++){
if (n%i == 0){
return false;
}
}
return true;
}
int main(){
int n;
cin >> n;
if (prime(n) && (prime(n - 6)|| prime(n + 6))){
cout << "Yes" <<endl;
if (prime(n-6)){
cout << n - 6;
}
else {
cout <<n+6;
}
}else {
cout << "No" << endl;
for (int i = n+1; ;i++){
if (prime(i)&&(prime(i - 6)||prime(i+6))){
cout << i;
break;
}
}
}
return 0;
}
敬请期待下一篇嘿嘿~