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的链接