题目
代码
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100000],b[10000];
int i,k,g,p;
k=0;
g=0;
p=0;
for(i=1;i<=n;i++)//定义a数组
{
a[k]=i;
k++;
}
i=0;
while(i<k)//找出a数组中的素数并传入b数组中
{
int x=a[i];
double y=sqrt(x);//利用开根号减少运算次数
int m=2;
int flag=1;
while(flag==1 && m<=y)
{
if(x%m==0)
{
flag=0;
}
else
{
m++;
}
}
if(flag==1)
{
b[g]=x;
g++;
}
i++;
}
i=0;
while(i<g)//找出素数对
{
if(b[i+1]-b[i]==2)
{
p++;
}
i++;
}
cout<<p;
}
备注
用到了sqrt()来快速查找素数。通过对目标开根号,减少计算次数。