筛法的一些技巧

又有点时间没有写东西了我来讲点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的数..

这东西在质因数分解和离散对数(似乎差不多不管了)里还是发挥了不少作用的..

筛法是可以并行的

理由同筛一段中的素数..

posted @ 2017-04-09 17:01  zball  阅读(424)  评论(0编辑  收藏  举报