让我们定义
d
n
d_n
dn为:
d
n
=
p
n
+
1
−
p
n
d_n = p_{n+1} - p_n
dn=pn+1−pn, 其中
p
i
p_i
pi是第
i
i
i个素数。显然有
d
1
=
1
d_1 = 1
d1=1, 且对于
n
>
1
n > 1
n>1 有
d
n
d_n
dn是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<
1
0
5
10^5
105),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
#include<stdio.h>
#include<math.h>
int isprime( int n );
int main(void)
{
int n, count = 0;
scanf("%d", &n);
for (int i = 2; i < n-1; i++)
{
if(isprime(i) && isprime(i+2)) count++;
}
printf("%d\n", count);
return 0;
}
int isprime( int n )
{
int k = (int)sqrt((double)n);
for (int i = 2; i <= k; i++)
{
if (n % i == 0) return 0;
}
return 1;
}