让我们定义d
n
为:d
n
=p
n+1
−p
n
,其中p
i
是第i个素数。显然有d
1
=1,且对于n>1有d
n
是偶数。“素数对猜想”认为“存在无穷多对相邻且差为2的素数”。
现给定任意正整数N(<10
5
),请计算不超过N的满足猜想的素数对的个数。
输入格式:
输入在一行给出正整数N。
输出格式:
在一行中输出不超过N的满足猜想的素数对的个数。
输入样例:
20
输出样例:
4
第一种方法:先找出全部素数然后比较
#include <stdio.h>
const int difference = 2;
int isPrime(int n);
int main()
{
int i, k, n, len, count = 0;
int a[100000]; //开的过小也可能会由点过不去
scanf("%d", &n);
for (k = 0, i = 2; i <= n; i++) //不超过n,不要忘记等于号,否则会有一个点过不去
if (isPrime(i))
a[k++] = i;
len = --k;
for (i = 0; i < len; i++)
{
if (a[i + 1] - a[i] == difference)
count++;
}
printf("%d", count);
return 0;
}
int isPrime(int n)
{
int i;
if (n <= 1)
return 0;
for (i = 2; i * i <= n; i++)
if (n % i == 0)
return 0;
return 1;
}
第二种方法边找边比较
待补充//