「まとめ」ふるいです

高速なリーグにゴーン、それをふるい要約します。

 

唯一の3当分の間、エジプトのふるい、ふるいラインについて、ドゥは、ふるいを教えます。

 

この事を言う方法。実際には、非常に柔軟。

まず、我々は乗法機能をふるい分け用ふるいのほとんどを知っている、と乗法機能とプライムの関係とても素晴らしい、我々は最初の素数がそれをふるい方法について話しています。

 

1.素数のふるいです

$神父ルート$ $ $ N-暴力決定。

これは($ 1、N $因子以外N- $ $)非自明な因子の数がない場合に匹敵列挙因子が、この数は素数です。

複雑:$ O(\ {n}はSQRT)$

 

$のSe。$オングストロームふるいです

複数の複合体を選別するためにそれを使用するために、すべての番号を列挙します。

複雑さがあります。$ O(nlnln n)で$

 

$のTh。$ライン画面

各列挙は素数、または数は、各番号を列挙するために、再び選別されるように、ホップは、素因数の最小数は係合からスクリーニングすることを確実にするために一緒に素数をスクリーニング掛け。

複雑である:O(N)

 

これらの素数のふるいです。

単一機能の数、通常ワイヤメッシュのスクリーンドット積。

 

ライン画面の複雑さを確保するためには、画面の時間は、3点の状況を議論します。

以下は、いくつかの例を示します。

オイラー機能

$$ \ varphi(N)= \和\ limits_ {i = 1} ^ {n}は[iが\ PERPのN] $$

各品質係数の貢献を考えてみましょう。

$ N = \ _ * P ^ C $を提供

各$ P ^ Cの$のために、答えの寄与は$ pを^ Cの\のFRAC {P-1} {P} $、および実際に物事の「互いに素密度」、つまり非常によく似ているものの感情的な理解があり、前記各区間$ pが$の大きさは、素数の分布が均一です。

オイラー関数は、乗法関数です。

PRODの\のP ^ C \ FRAC {P-1} {P} = N \ PRODの\のFRAC {P-1} {P} \ $$ \ varphi(N)= $$

行は、それをふるいましょう。

$ Fr.i \ \ P那么$ $ \ varphi(I)= I-1 $

その後、$ Se.i%p_j!= 0 $製品の性質の関数、$ \ varphi(ip_j)= \ varphi(I)\ varphi(p_j)$

$ Th.i%p_j == 0 $代入する式に基づいて、新たに発見された式のみ素数のn $ $ $ \ $のProd以降の部分が計算されていながら何よりも、貢献しています。

その後:$ \ varphi(ip_j)= \ varphi(I)p_j $

 

除数の2数

$ N = \ _ * P ^ C $を提供

定義では、除数で列挙各品質係数指数が得られ:

の$ D(N)= \ PRODのC + 1 $

乗法関数であることが判明することができます。

行は、それをふるいましょう。

首先加入一个辅助数组$a(i)$表示$i$最小的质因子在$i$中的指数。

$fr.i\in\ p$那么$d(i)=2,a(i)=1$

$se.i%p_j!=0$根据积性函数的性质,$d(ip_j)=d(i)d(p_j),a(ip_j)=1$

$th.i%p_j==0$根据公式代入,$d(ip_j)=d(i)\frac{(a(i)+1)}{(a(i)+2)},a(ip_j)=a(i)+1$

 

3.自然数幂函数

$$f_d(i)=i^d$$

这是完全积性函数。

其实要简单很多了就。

还是套用线筛的模板,然后每乘入一个质数的时候。

$$f_d(ip_j)=f_d(i)p_j^d$$

每次筛出质数的时候用快速幂求出$p_j^d$,复杂度是$O(n\frac{log_2(n)}{ln(n)})$的,仍然是线性。

 

4.莫比乌斯函数

$$\mu(n)=\begin{cases} (-1)^w &\ n=\prod\limits_{i=1}^{w}p_i&\\0 &\ n=p^2\prod\limits_{i=1}^{w}p_i^{c_i}&\end{cases}$$

它是积性函数

我们来线筛它。

$fr.i\in\ p$那么$\mu(i)=-1$

$se.i%p_j!=0$那么$\mu(ip_j)=\mu(i)\mu(p_j)$

$th.i%p_j==0$那么$\mu(ip_j)=0$

 

5.约数和函数

根据定义,枚举每个质因子在约数中出现的指数。

设$n=\_*p^c$

$$\sigma(n)=\prod\sum\limits_{i=0}^{c}p^i$$

发现是等比数列可以直接求和。

$$\sigma(n)=\prod\frac{1-p^c}{1-p}$$

那么我们需要维护一个函数$b(n)$代表$n$最小的质因子的最大指数次幂,也就是说对于$n$的最小质因子$p$,$b(n)=\sum\limits_{i=0}^{c}p^i$,同时需要借用上面筛过的函数$f_d(n)$和$a(n)$。

我们来线筛它。

$fr.i\in\ p$那么$b(i)=i+1,\sigma(i)=i+1$

$se.i%p_j!=0$那么$b(ip_j)=p_j+1,\sigma(ip_j)=\sigma(i)\sigma(p_j)$

$th.i%p_j==0$那么$b(ip_j)=b(i)+f_{a(ip_j)}{p_j},\sigma(ip_j)=\sigma(i)\frac{b(i)}{b(ip_j)}$

 

6.最大共因数

也就是在$k$一定的情况下求:

$gcd(n,k)=\prod\limits_{p}p^{min(c_n,c_k)}$

可以发现是积性函数。

仍然利用函数$a(n)$,设函数$g_n(p)$为$n$中质因子$p$的最大幂指数。

我们来线筛它。

$fr.i\in\ p$那么$gcd(i,k)=i[i|n]+[i\perp n]$

$se.i%p_j!=0$那么$gcd(ip_j,k)=gcd(i,k)gcd(p_j,k)$

$th.i%p_j==0$那么$gcd(ip_j,k)=gcd(i,k)(p_j[a(i)<g_n(p_j)]+[a(i)>g_n(p_j)])$

 

线筛复杂度已经很优秀了,可是就是有毒瘤出题人出数据出到$1e12$,这时候杜教筛就出场了。

杜教筛用来筛特定积性函数的前缀和。

设目标函数为$f$,其前缀和为$S$

$*$为狄利克雷卷积,相关证明在约数容斥有所交待。

首先设函数:

$$h=g*f$$

那么:

$$\begin{array}{rcl}\\ \sum\limits_{i=1}^{n}h(i)&=&\sum\limits_{i=1}^{n}\sum\limits_{d|i}g(d)f(\frac{i}{d})\\&=&\sum\limits_{d=1}^{n}g(d)\sum\limits_{i=1}^{\frac{n}{d}}f(i)\\&=&\sum\limits_{d=1}^{n}g(d)S(\frac{n}{d})\end{array}$$

移项得到:

$$S(n)=\sum\limits_{i=1}^{n}h(i)-\sum\limits_{d=2}^{n}g(d)S(\frac{n}{d})$$

这样的话如果我们的$h$和$g$的前缀和很好求,后面的部分就可以用数论分块来解决了。

 

おすすめ

転載: www.cnblogs.com/Lrefrain/p/11791013.html