素数筛法
Eratosthenes 筛法
大致上就是从2开始往后扫,找到一个未被筛的(素)数以后将它在
时间复杂度O(nloglogn),空间复杂度O(n)
Euler 筛法
这个算法的精妙之处在于每一个合数只会被它最小的素因子筛去,它对枚举的每一个数都尝试乘上一个质数,将构出的合数筛去。
考虑合数n=pm=p′m′,其中p是它最小的素因子,
综上,Euler筛法的时间、空间复杂度都是O(n)
Möbius函数的线性筛法
由于μ函数是一个积性函数,而且它的性质比较特殊,我们只需要在欧拉筛的过程中讨论一下就可以了。
实际上只要能快速算出f(pk),配合素数线筛就可以线性或者带个log地筛出积性函数的值。