一、题目
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<105),请计算不超过N的满足猜想的素数对的个数。
二、输入输出格式
1.输入格式
输入在一行给出正整数N。
2.输出格式
在一行中输出不超过N的满足猜想的素数对的个数。
三、输入输出样例
1.输入样例
20
2.输出样例
4
四、解题思路
从2开始遍历,判断i和i-2是否都是素数
五、完整代码
#include<bits/stdc++.h>
using namespace std;
bool prime(int a) {
if(a<2) return false;
else {
int k=(int)sqrt(a);
for(int i=2; i<=k; i++) {
if(a%i==0) {
return false;
break;
}
}
return true;
}
}
int main() {
int n;
cin>>n;
int count=0;
for(int i=2; i<=n; i++) {
if(prime(i)&&prime(i-2)) {
// cout<<i<<endl;
count++;
}
}
cout<<count;
return 0;
}
总结
一、素数函数
①素数要大于2
②判断2~√n即可
③时间复杂度为√n