MEISSEL-LEHMER算法
查看原帖
MEISSEL-LEHMER算法
1328954
303grace楼主2024/4/4 14:12

原理:我们预处理出N^(2/3)以内的素数 然后对于询问,我们可以计算出1-N之内,不能被2-N^(1/3)的质数整除的数字个数。 这个东西我们用f[i][j]表示,则有f[i][j]=f[i][j-1]-f[i/pri[j]][j-1]且f[i][0]=i; 同时有f[i][j]=max(0,(1-i)质数个数-j+1) 然后我们预处理出i<=100000,j<=70的f数组,剩下直接递归 然后我们+2-N^(1/3)的质数个数-1,称之为伪素数。 以发现此时仍有合数,但一定是两个大于N^(1/3)次的素数相乘。 我们枚举较小的素数,可以计算出较大素数范围。 然后剩下的就是真素数了。

2024/4/4 14:12
加载中...