Algorithm 轮因式分解&;埃拉托斯烯筛

Algorithm 轮因式分解&;埃拉托斯烯筛,algorithm,optimization,sieve-of-eratosthenes,wheel-factorization,Algorithm,Optimization,Sieve Of Eratosthenes,Wheel Factorization,我想进一步优化筛子。我已经学会了车轮分解。但我不明白如何在筛子中实现轮子分解 bool status[N]={0}; void SOE(){ status[0]=1; status[1]=1; status[2]=0; for(int i=4;i<N;i=i+2){ status[i]=1; } int sqrtN=sqrt(N);; for(int i=3;i<=sqrtN;i=i+2){ if

我想进一步优化筛子。我已经学会了车轮分解。但我不明白如何在筛子中实现轮子分解

bool status[N]={0};
void SOE(){
    status[0]=1;
    status[1]=1;
    status[2]=0;
    for(int i=4;i<N;i=i+2){
        status[i]=1;
    }
    int sqrtN=sqrt(N);;
    for(int i=3;i<=sqrtN;i=i+2){
        if(status[i]==0){
            for(int j=i*i;j<N;j+=i+i){
                status[j]=1;
            }
        }
    }
}
bool状态[N]={0};
无效SOE(){
状态[0]=1;
状态[1]=1;
状态[2]=0;

对于(int i=4;iYou可能想看看Atkin的筛。在这里的算法描述中,这不是意味着用轮分解生成的列表替换步骤1吗?我在上讨论了Paul Pritchard的轮筛;它太大了,无法在这里显示。请注意,尽管查找素数的渐进复杂性有所提高,但常数因子意味着在一个简单的埃拉托什内斯筛子上,每次都比普里查德的轮筛好。谢谢@user448810的链接