自测-2 素数对猜想 (20 分)
让我们定义dn为:dn=pn+1−pn,其中pi是第i个素数。显然有d1=1,且对于n>1有dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N
(<105),请计算不超过N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N
。
输出格式:
在一行中输出不超过N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
1 #include <iostream> 2 #include <cmath> 3 using namespace std; 4 bool Check(int n){//检查是否为素数的函数 5 for(int i = 2; i <= sqrt(n); i++){ 6 if(n % i == 0) return true;//不是素数 7 } 8 return false;//是素数 9 } 10 int main(){ 11 int N; 12 cin >> N; 13 int count = 0;//用来统计素数 14 for(int i = 2; i <= N - 2; i++){//这里N-2的原因是保证素数对不会越界 15 if(!Check(i) && !Check(i + 2)){//检查差值为2的俩个数是否都为素数 16 count++; 17 } 18 } 19 cout << count; 20 return 0; 21 }