题目
让我们定义 d n d_n d ? n ? ? 为: d n = p n + 1 ? p n d_n = p_{n+1}-p_n d ? n ? ? = p ? n + 1 ? ? ? p ? n ? ? ,其中 p i p_i p ? i ? ? 是第 i i i 个素数。显然有 d 1 = 1 d_1 = 1 d ? 1 ? ? = 1 ,且对于 n > 1 n>1 n > 1 有 d n d_n d ? n ? ? 是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数 N
( < 1 0 5 <10^5 < 1 0 ? 5 ? ? ),请计算不超过 N
的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数 N
。
输出格式:
在一行中输出不超过 N
的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
代码
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int i,j, n,sum=0;
cin >> n;
int* a = new int[n+1];
if(n>1)
a[1] = 0;
for (i = 2; i < n + 1; i++)
a[i] = 1;
for (i = 2; i < n + 1; i++)
for (j = 2; j <= sqrt(i); j++)
if (i % j == 0)
{
a[i] = 0;
break;
}
for (i = 3; i < n + 1; i++)
if (a[i] == 1 && a[i - 2] == 1)
sum++;
cout << sum;
return 0;
}