1.找出小于N的素数 2.判断相邻两数是否满足相差为2的条件。
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
//判断是否是素数的函数
bool isprime(int n)
{ //判定n是不是素数
if (n <= 1) return false; //特判
int sqr = (int)sqrt(1.0*n); //得到根号n,sqrt函数在c++中参数必须是浮点型
for (int i = 2; i <= sqr; i++) //如果n有除了自身和1以外的因子,则不是素数
{
if (n%i == 0)
return false;
}
return true;
}
int main()
{
vector<int> v; //定义一个vector数组,用于存储范围内的所有素数
int N;
cin >> N;
int i;
int j = 0;
int Prime = 0; //小于N的素数的个数
int k = 0; //满足条件的素数对的个数
for ( i = 1; i <= N ; i++)
{
if (isprime(i))
{
v.push_back(i);
Prime++;
}
}
for ( j = 1; j <= Prime-1; j++)
{
if ((v[j] - v[j - 1]) == 2)
{
k++;
}
}
cout << k << endl;
return 0;
}