我使用以下代码生成了一个简单的筛子-
#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 循环,但它没有似乎工作,我怎样才能减少额外的计算?提前致谢。