7-2 素数对猜想


题目描述:

让我们定为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

解题思路:

? 判断从1到N正整数中的素数,将其存放到数组中并同时计数。

? 然后将数组遍历,判断符合条件的素数对,并计数。

代码:

#include 
#include 
using namespace std;
int isprime(int n)//判断n是否为素数
{
	if (n <= 1)
		return 0;
	if (n == 2)
		return 1;
	if (n % 2 == 0)
		return 0;
	else
	{
		for (int i = 2; i <= sqrt(n) + 1; i++)
		{
			if (n % i == 0)
			{
				return 0;
			}
		}
		return 1;
	}
}

int arr[100010];

int main()
{
	int n,num=0,count=0;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		if (isprime(i) == 1)//如果i为素数,则记录素数的个数,并将其存放到数组对应的空间中
		{
			num++;
			arr[num] = i;
		}
	}
	for (int i = 1; i+1 <= num; i++)
	{
		if (arr[i + 1] - arr[i] == 2)//判断是否符合条件
		{
			count++;
		}
	}
	cout << count;
	return 0;

}

相关