素数的线性筛法
2009-03-09 19:31 Logic0 阅读(144) 评论(0) 编辑 收藏 举报算法摘录一:
for (i=2;i<=n;i++)
{
if (a[i]==0)
{
num++;p[num]=i;
}
for (j=1;((j<=num) && (i*p[j]<=n)); j++)
{
a[i*p[j]] = 1 ;
if (i%p[j] == 0) break;
}
}
算法摘录二:
int num; //num为素数的个数,a[i]为第i个数是否为素数,p[i]为第i+1个素数
void prime()
{
long long i, j ;
num=0;
for(i=2; i<N; i++)
{
if(a[i]==0)
{
p[num]=i;
num++;
for(j=i; j<N/i; j++)
{
a[i*j]=1;
}
}
}
}