在给定范围内使用sundaram筛(b,a)

时间:2015-06-02 08:02:15

标签: c primes sieve

我使用以下代码生成一个简单的筛子 -

#include<stdio.h>

int main()
{
int a,b,i,j;
scanf("%d%d",&a,&b);

int m = (a)/2;
int d[m+1];

for (i=0;i<m;i++)
    d[i]=1;

for (i=1;i<=m;i++)
    for (j=i;j<=((m-i)/(2*i+1));j++)
        d[i+j+2*i*j]=0;

if (b<=2) printf("2\n");
for (i=0;i<m;i++)
    if(d[i]!=0&&i!=0) printf("%d\n",2*(i)+1);

}

但我想消除用于查找素数到b的额外时间,为此我做了m =(ab)/ 2并尝试从b / 2和sqrt b / 2而不是零开始主for循环但是它似乎不起作用,我怎样才能减少额外的计算?提前致谢。

0 个答案:

没有答案