1.筛选法求数的最大因子 a[i]=x 表示i的最大质因子是x
void maketable(int n)
{
int i,j;
a[1]=1;
//对于偶数,暂令其最大质因子为2
for(i=2;i<=n;i+=2)
a[i]=2;
//对于素数i,暂令 j=k*i的最大质因子为i
for(i=3;i<=n;i+=2)
if(a[i]==0)
for(j=i;j<=n;j+=i)
a[j]=i;
}
2.筛选法求一个数的因子之和
void maketable(int n)
{
memset(sum,0,sizeof(sum));//初始化
for(int i=1;i<=n;i++) //因子为i
for(int j=i;j<=n;j+=i)//j是i的倍数
sum[j]+=i;
}
3.筛选法打素数表