问题描述
找出相邻素数相差2的素数对数。
题目分析
题目比较简单,我们只要找出一个区间的素数。可以先写一判断素数的函数,然后边输入边判断,然后将素数加入到我们提前声明的数组中。遍历进行判断。
还有一种简便做法,就是我们提前声明一个数组,每输入一个数字就判断它是不是素数,如果是素数,就取素数数组中的最后一个元素和它做差,如果差等于2,就把count+1(count是素数对数目)
然后再将这个刚输入的素数加入数组。我稍微写的详细了一点,就没用这种方法。
代码
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
int main()
{
int n;
cin>>n;//输入上限
vector<int>prim;//素数集合
for(int i = 2;i <= n;i++)
{
int flag = 0;//标志素数和合数
for(int j = 2;j <= sqrt(i);j++)
{
if(i % j == 0)
{
flag = 1;
break;
}
}
if(flag == 0)
prim.push_back(i);
}
int count = 0;//素数对
for(int i = 0;i < prim.size() - 1;i++)
{
//cout<<prim[i]<<endl;
if(prim[i+1] - prim[i] == 2)
count++;
else
continue;
}
cout<<count;
return 0;
}
总结
答题用时7min
Q7——finish√