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;
}