#include<stdio.h>
#include<math.h>
#include<algorithm>
#include<string.h>
using namespace std;
#define maxsize 1000000
int ani=1;
bool a[maxsize];
void init()\\素数筛选
{
for(int i=2;i<1000000;i++)
{
for(int j=2;i*j<1000000;j++)
{
a[i*j]=true;
}
}
}
int main()
{
memset(a,false,sizeof(a));
init();
a[1]=true;
a[0]=true;
int x,y;
int b[100000];
int l=0;
for(int i=2;i<100000;i++)\\只留下素数
if(!a[i])
b[l++]=i;
int c[100000];
c[0]=0;
memset(c,0,sizeof(c));;
for(int i=1;i<l;i++)\\预处理
{
if(b[i]-b[i-1]==2)
c[b[i]]=c[b[i-1]]+1;
else
c[b[i]]=c[b[i-1]];
}
while(scanf("%d",&x)&&x>=0)
{
while(c[x]==0&&x!=0)
x--;
printf("%d\n",c[x]);
}
}素数 hdu 3792 Twin Prime Conjecture
最新推荐文章于 2020-02-26 13:29:19 发布
本文介绍了一种使用C语言实现的素数筛选算法,并通过该算法来找出一定范围内的所有素数。在此基础上,进一步实现了对双胞胎素数对的计数,即两个相差为2的连续素数。程序通过预处理的方式加速了查询效率。
948

被折叠的 条评论
为什么被折叠?



