简单表示:isPrime[i]等于0表示i不是素数,否则等于1则表示i是素数。
#define MAX 5000005
long isPrime[MAX];
void initPrime(){
long i,j;
isPrime[0]=isPrime[1]=0;
for(i=2;i<MAX;i++)isPrime[i]=1;
for(i=2;i<MAX;i++){
if(isPrime[i]){
for(j=2;i*j<MAX;j++)
isPrime[i*j]=0;
}
}
}
附:
求一个数的质因子个数(比如6=2*3质因子数为2,又如8=2³质因子数为3)
1)先用快速帅选素数法标出素数以及每个数的最大质因子。
2)那么再处理这个数的质因子个数就是除以最大质因子之后的那个数的质因子个数+1;(dp求解)
本文深入探讨了使用快速筛选素数法来标记素数以及每个数的最大质因子的过程,并提供了求解一个数质因子个数的算法实现。通过逐步筛选和迭代,该算法能高效地确定一个数的质因数分解,对于数学和计算机科学领域的学习者具有重要意义。
1175

被折叠的 条评论
为什么被折叠?



