筛法的一些技巧
又有点时间没有写东西了我来讲点trick..对就是水一篇..
大家都会筛法吧..
筛k×n+t形式的素数,k,t给定
比如说6n+1形式的(大雾)
你考虑筛法的本质是找出p mod k×n+t=0的那些k×n+t<=Upper_Bound的那些n,它们步长间隔是相同的..
这样就可以方便的筛了..
复杂度是O((n=Upper_Bound/k)loglogn+sqrt(Upper_Bound))..大概..?
筛一段中的素数,比如[1e16,1e16+1e8]
同样的,反正你只需要把<=sqrt(Upper_Bound)的素数筛掉就好了..
Wheel Factorization
大概就是你可以预处理一个婊,对mod 2,3,5,7,...,一个小素数不对的那些就不枚举了
筛B-smooth number(某个形式的,比如f(x)=x²-t)
如果f(x)=f(x+p) (mod p),我们又可以快乐的筛筛筛啦..不过现在是在用筛法分解..
最后再用试除法/Pollard Rho/ECM把那些likely to be smooth的数分解一遍..
我好像还没说B-smooth是什么..?就是所有素因子都<=B的数..
这东西在质因数分解和离散对数(似乎差不多不管了)里还是发挥了不少作用的..
筛法是可以并行的
理由同筛一段中的素数..