线性删减
#include<iostream>
#define max_num 100005
using namespace std;
int flag_prime[max_num];
int prime[max_num/3], ff[max_num/3];
int len=0;
int main()
{
int i,j, n;
for(i=2;i<max_num;i++)
{
if(flag_prime[i] == 0)
{
prime[len]=i;
if(len != 0)
{
if(prime[len] - prime[len-1] == 2)
ff[len] = ff[len-1] + 1;
else
ff[len] = ff[len-1];
}
len++;
}
for(j=0;j<len && i*prime[j]<max_num;j++)
{
flag_prime[i*prime[j]]=1;
if(i%prime[j] == 0)
break;
}
}
while(scanf("%d", &n) != EOF && n >= 0)
{
for( i=0; i < n; i++)
{
if(prime[i] > n)
{
printf("%d\n", ff[i-1]);break;
}
}
}
return 0;
}
本文介绍了一个使用线性删减算法寻找特定素数对的C++程序实现。该程序通过预先筛选出一定范围内的所有素数,并标记那些距离为2的素数对,然后针对输入的数值范围输出该范围内素数对的数量。文章详细展示了算法的实现过程及关键代码。
943

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



