从线性筛到莫比乌斯反演

  1. 可积函数

    若 ∀ g c d ( m , n ) = 0     满 足 f ( a ∗ b ) = f ( a ) × f ( b ) 且   ∃ f ( n ) ≠ 0 则 称 f ( x ) 为 积 性 函 数 若\forall gcd(m,n)=0 \ \ \ 满足f(a*b)=f(a) \times f(b) 且\ \exists f(n) \ne 0 则称f(x)为积性函数 gcd(m,n)=0   f(ab)=f(a)×f(b) f(n)=0f(x)

  2. 可积函数性质

    1. $F(n)=\sum_{d|n}f(d)\$ 一定是可积函数

    2. 若 F ( n ) = ∑ d ∣ n f ( d ) 则 有 F ( n ) = ( 1 + f ( p 1 ) + f ( p 1 2 ) + ⋯ + f ( p 1 α 1 ) ) ( 1 + f ( p 2 ) + f ( p 2 2 ) + ⋯ + f ( p 2 α 2 ) ) ⋯ 若F(n)=\sum_{d|n}f(d)\\ 则有F(n)=(1+f(p_1)+f({p_1}^2)+\cdots+f(p_1^{\alpha1}))(1+f(p_2)+f({p_2}^2)+\cdots+f(p_2^{\alpha2}))\cdots F(n)=dnf(d)F(n)=(1+f(p1)+f(p12)++f(p1α1))(1+f(p2)+f(p22)++f(p2α2))

  3. 线性筛

    1. 关键代码

      for(long j = 0 ; j < num_prime && i * prime[j] <  N ; j ++)关键处1
       {  
      	      	isNotPrime[i * prime[j]] = 1;
      	  		if( !(i % prime[j] ) )  //关键处2
      				break;  
      
      }
      
    2. 每个数会被它最小的质数筛去

    3. 筛欧拉函数

      1. 欧拉函数定义为n与内与其互质的数的个数,特别的 ϕ ( 1 ) = 1 \phi(1)=1 ϕ(1)=1

      2. ϕ ( n ) = n ∗ ∏ i = 1 k p i − 1 p i \phi(n)=n*\prod_{i=1}^{k}\frac{p_i-1}{p_i} ϕ(n)=ni=1kpipi1

      3. 如何筛呢
        因 为 显 然 有 当 n % p 1 ≠ 0 时 ϕ ( n ) = p 1 ∗ n p 1 ∗ ϕ ( n p 1 ) 当 n % p = = 0 时 ϕ ( n ) = ( p 1 − 1 ) ∗ n p 1 ∗ ϕ ( n p 1 ) 那 么 第 一 次 如 果 ( ! ( i % p r i m e [ j ] ) ) 就 乘 ( p r i m e [ j ] − 1 ) 否 则 乘 ( p r i m e [ j ] ) 因为显然有\\ 当n\%p_1\ne0时\\ \phi(n)=p_1*\frac{n}{p_1}*\phi({\frac{n}{p_1}})\\ 当n\%p==0时\\ \phi(n)=(p_1-1)*\frac{n}{p_1}*\phi({\frac{n}{p_1}})\\ 那么第一次如果(!(i\%prime[j]))就乘(prime[j]-1) 否则乘(prime[j]) n%p1=0ϕ(n)=p1p1nϕ(p1n)n%p==0ϕ(n)=(p11)p1nϕ(p1n)(!(i%prime[j]))(prime[j]1)(prime[j])

    4. 筛莫比乌斯函数

      1. 如果 % p r i m e [ i ] = = 0 \%prime[i]==0 %prime[i]==0 那么 μ ( i ∗ p r i m e [ j ] ) \mu(i*prime[j]) μ(iprime[j])显然等于0,否则等于 − μ ( i ) -\mu(i) μ(i)
    5. 筛约数个数

      1. 设 n = p 1 α 1 ⋯ p k α k 设n=p_1^{\alpha1}\cdots p_k^{\alpha k} n=p1α1pkαk

        f a c ( n ) = ( α 1 + 1 ) ∗ ( α 2 + 1 ) ∗ ⋯ ∗ ( α k + 1 ) fac(n)=(\alpha_ 1 +1)*(\alpha_2 +1)*\cdots*(\alpha _k+1) fac(n)=(α1+1)(α2+1)(αk+1)

        记录最小质因数当前的次数即可

    6. 筛约数和

      1. 设 n = p 1 α 1 ⋯ p k α k 设n=p_1^{\alpha1}\cdots p_k^{\alpha k} n=p1α1pkαk

        s u m ( n ) = ∑ j = 0 α 1 p 1 j ∗ ⋯ ∗ ∑ j = 0 α k p k j sum(n)=\sum_{j=0}^{\alpha _1}p_1^j*\cdots*\sum_{j=0}^{\alpha _k}p_k^j sum(n)=j=0α1p1jj=0αkpkj

        记录最小质因数当前次方之后是多少

      2. 还有一个可能在别的地方用的 d ( i , j ) = = ∑ x ∣ i ∑ y ∣ j [ g c d ( i , j ) = = 1 ] d(i,j)==\sum_{x|i}\sum_{y|j}[gcd(i,j)==1] d(i,j)==xiyj[gcd(i,j)==1]

  4. 莫比乌斯函数定义

    1. $若d=0\ 则\ \mu(d)=0 $

    2. 若 d = p 1 ∗ p 2 ∗ p 3 ∗ ⋯ ∗ p n   其 中 p i 为 互 异 的 质 数 , 则 μ ( d ) = ( − 1 ) n 若d=p_1*p_2*p_3* \cdots *p_n \ 其中p_i为互异的质数,则 \mu(d)=(-1)^n d=p1p2p3pn piμ(d)=(1)n

    3. 其 他 情 况 μ ( d ) = 0 其他情况\mu(d)=0 μ(d)=0

  5. 莫比乌斯函数性质

    1. Σ d ∣ n μ ( d ) = { 1 , n = 1 0 , n ≠ 1 \Sigma_{d|n} \mu(d) =\begin{cases} 1,n=1 \\ 0,n\ne1 \\ \end{cases} Σdnμ(d)={1,n=10,n=1
    2. 可 用 欧 拉 函 数 可 进 行 代 换 ∑ d ∣ n ϕ ( d ) = n 可用欧拉函数可进行代换 \sum_{d|n}\phi(d)=n dnϕ(d)=n
    3. 给定一个数列a和一个数列x,数列中与x互素的数的个数为 $\Sigma_{d|n}\mu(d)cnt_d $ c n t d cnt_d cntd指的是数列中有多少数是d的倍数
    4. 一个数的因子数是logn级别的(显然)
    5. ∑ d ∣ n μ ( d ) ∗ ⌊ n d ⌋ = ϕ ( n ) \sum_{d|n}\mu(d)*\lfloor{\frac{n}{d}}\rfloor=\phi(n) dnμ(d)dn=ϕ(n)
    6. 反演定理 ,一般不用,但是可以和第2大点产生联系

    若 有 F ( n ) = ∑ d ∣ n f ( d ) 则 有 f ( n ) = ∑ d ∣ n μ ( d ) ∗ F ( ⌊ n d ⌋ ) 若有F(n)=\sum_{d|n}f(d)\\ 则有f(n)=\sum_{d|n}\mu(d)*F(\lfloor\frac{n}{d}\rfloor) F(n)=dnf(d)f(n)=dnμ(d)F(dn)

  6. 一般都不会使用反演公式的, 一 般 利 用 [ g c d ( i , j ) = = 1 ] = Σ d ∣ g c d ( i , j ) μ ( d ) 一般利用[gcd(i,j)==1]=\Sigma_{d|gcd(i,j)}\mu(d) [gcd(i,j)==1]=Σdgcd(i,j)μ(d)

  7. 例一:求 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = 1 ] \sum_{i=1}^{n}\sum_{j=1}^m[gcd(i,j)==1] i=1nj=1m[gcd(i,j)==1]
    = ∑ i = 1 n ∑ j = 1 m ∑ d ∣ g c d ( i , j ) μ ( d ) = ∑ d = 1 n μ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ =\sum_{i=1}^n\sum_{j=1}^m\sum_{d|gcd(i,j)}\mu(d)\\ =\sum_{d=1}^n\mu(d)*\lfloor{\frac{n}{d}}\rfloor*\lfloor{\frac{m}{d}}\rfloor\\ =i=1nj=1mdgcd(i,j)μ(d)=d=1nμ(d)dndm
    例二:求 ∑ i = 1 n ∑ j = 1 m [ g c d ( i , j ) = = k ] \sum_{i=1}^{n}\sum_{j=1}^m[gcd(i,j)==k] i=1nj=1m[gcd(i,j)==k]
    = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ [ g c d ( i , j ) = = 1 ] =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}[gcd(i,j)==1] =i=1knj=1km[gcd(i,j)==1]
    例三:求 ∑ i = 1 n ∑ j = 1 m ∗ i ∗ j ∗ [ g c d ( i , j ) = = k ] \sum_{i=1}^{n}\sum_{j=1}^m*i*j*[gcd(i,j)==k] i=1nj=1mij[gcd(i,j)==k]
    = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∗ i ∗ k ∗ j ∗ k ∗ [ g c d ( i , j ) = = 1 ] = ∑ i = 1 ⌊ n k ⌋ ∑ j = 1 ⌊ m k ⌋ ∗ i ∗ k ∗ j ∗ k ∗ ∑ d ∣ g c d ( i , j ) μ ( d ) = k 2 ∑ d = 1 n μ ( d ) ∗ d ∗ d ∗ ∑ i = 1 ⌊ n k ∗ d ⌋ ∗ i ∗ ∑ j = 1 ⌊ m k ∗ d ⌋ ∗ j ( 这 一 步 是 因 为 本 身 是 乘 d 的 倍 数 的 , 把 d 除 掉 就 是 等 差 数 列 了 ) =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}*i*k*j*k*[gcd(i,j)==1]\\ =\sum_{i=1}^{\lfloor {\frac{n}{k}} \rfloor}\sum_{j=1}^{\lfloor {\frac{m}{k}} \rfloor}*i*k*j*k*\sum_{d|gcd(i,j)}\mu(d)\\ =k^2\sum_{d=1}^{n}\mu(d)*d*d*\sum_{i=1}^{\lfloor {\frac{n}{k*d}} \rfloor}*i*\sum_{j=1}^{\lfloor {\frac{m}{k*d}} \rfloor}*j (这一步是因为本身是乘d的倍数的,把d除掉就是等差数列了) =i=1knj=1kmikjk[gcd(i,j)==1]=i=1knj=1kmikjkdgcd(i,j)μ(d)=k2d=1nμ(d)ddi=1kdnij=1kdmj(dd)
    例四:求 ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) \sum_{i=1}^{n}\sum_{j=1}^{m}gcd(i,j) i=1nj=1mgcd(i,j)

= ∑ i = 1 n ∑ j = 1 m ∑ d ∣ g c d ( i , j ) ϕ ( d ) = ∑ d = 1 n ϕ ( d ) ∗ ⌊ n d ⌋ ∗ ⌊ m d ⌋ =\sum_{i=1}^{n}\sum_{j=1}^{m}\sum_{d|gcd(i,j)}\phi(d)\\ =\sum_{d=1}^n\phi(d)*{\lfloor {\frac{n}{d}} \rfloor}*{\lfloor {\frac{m}{d}} \rfloor} =i=1nj=1mdgcd(i,j)ϕ(d)=d=1nϕ(d)dndm

​ 例五:求 ∑ i = 1 n ∑ j = 1 m l c m ( i , j ) \sum_{i=1}^{n}\sum_{j=1}^{m}lcm(i,j) i=1nj=1mlcm(i,j)
= ∑ i = 1 n ∑ j = 1 m i ∗ j g c d ( i , j ) = ∑ d = 1 n ∑ i = 1 n ∑ j = 1 m i ∗ j d ∗ [ ( g c d ( i , j ) = = d ] = ∑ d = 1 n d ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 m d ⌋ i ∗ j ∗ [ ( g c d ( i , j ) = = 1 ] = ∑ d = 1 n d ∑ i = 1 ⌊ n d ⌋ ∑ j = 1 ⌊ m d ⌋ i ∗ j ∗ ∑ k ∣ g c d ( i , j ) μ ( k ) = ∑ d = 1 n d ∑ k = 1 ⌊ n d ⌋ μ ( k ) ∗ k 2 ∑ i = 1 ⌊ n d k ⌋ i ∑ j = 1 ⌊ m d k ⌋ j =\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{i*j}{gcd(i,j)}\\ =\sum_{d=1}^{n}\sum_{i=1}^{n}\sum_{j=1}^{m}\frac{i*j}{d}*[(gcd(i,j)==d]\\ =\sum_{d=1}^{n} d \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\frac{m}{d}\rfloor}i*j*[(gcd(i,j)==1]\\ =\sum_{d=1}^{n} d \sum_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{d}\rfloor}i*j* \sum_{k|gcd(i,j)}\mu(k)\\ =\sum_{d=1}^{n} d \sum_{k=1}^{\lfloor\frac{n}{d}\rfloor} \mu(k)*k^2\sum_{i=1}^{\lfloor\frac{n}{dk}\rfloor}i\sum_{j=1}^{\lfloor\frac{m}{dk}\rfloor}j =i=1nj=1mgcd(i,j)ij=d=1ni=1nj=1mdij[(gcd(i,j)==d]=d=1ndi=1dnj=1dmij[(gcd(i,j)==1]=d=1ndi=1dnj=1dmijkgcd(i,j)μ(k)=d=1ndk=1dnμ(k)k2i=1dknij=1dkmj
​ 可以 ⌊ n d ⌋ \lfloor\frac{n}{d}\rfloor dn分一个块 ⌊ n d k ⌋ \lfloor\frac{n}{dk}\rfloor dkn再分一个块可做

​ 不过还有更神奇的代换方式令 T = d k , f ( x ) = ∑ i = 1 x i T=dk,f(x)=\sum_{i=1}^xi T=dk,f(x)=i=1xi,则有
= ∑ d = 1 n d ∑ k = 1 ⌊ n d ⌋ μ ( k ) ∗ k 2 ∗ f ( ⌊ n T ⌋ ) ∗ f ( ⌊ m T ⌋ ) 枚 举 T = ∑ T = 1 n f ( ⌊ n T ⌋ ) ∗ f ( ⌊ m T ⌋ ) ∗ ∑ d ∣ T d ∗ μ ( T d ) ∗ ( T d ) 2 d 和 T d 代 换 一 下 = ∑ T = 1 n f ( ⌊ n T ⌋ ) ∗ f ( ⌊ m T ⌋ ) ∗ ∑ d ∣ T d ∗ μ ( d ) ∗ T 观 察 ∑ d ∣ T d ∗ μ ( d ) 当 a ⊥ b ∑ d ∣ a d ∗ μ ( d ) 与 ∑ d ∣ b d ∗ μ ( d ) 对 ∑ d ∣ a ∗ b d ∗ μ ( d ) 贡 献 独 立 ∴ f ( a ∗ b ) = f ( a ) ∗ f ( b ) 且 ∴ 如 果 a 为 质 数   f ( a ) = 1 − a 当 a % b = = 0 ∵ a 里 的 元 素 和 b 里 的 元 素 相 乘 , μ 不 等 于 0 的 都 在 a 里 了 显 然 f ( a ∗ b ) = f ( a ) ∑ d ∣ T d ∗ μ ( d ) 就 可 求 了 , 做 前 缀 和 的 时 候 把 T 乘 上 就 好 了 分 个 块 , 整 个 式 子 就 可 以 求 了 =\sum_{d=1}^n d \sum_{k=1}^ {\lfloor \frac{n}{d} \rfloor} \mu(k) *k^2 * f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor})\\ 枚举T\\ =\sum_{T=1}^n f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor}) *\sum_{d|T} d *\mu(\frac{T}{d})*{(\frac{T}{d})}^2\\ d和\frac{T}{d}代换一下\\ =\sum_{T=1}^n f({\lfloor \frac{n}{T} \rfloor}) * f({\lfloor \frac{m}{T} \rfloor}) *\sum_{d|T} d *\mu(d)*T\\ 观察\sum_{d|T} d *\mu(d)\\ 当a\perp b \\ \sum_{d|a} d *\mu(d) 与 \sum_{d|b} d *\mu(d) 对 \sum_{d|a*b} d *\mu(d)贡献独立\\ \therefore f(a*b)=f(a)*f(b)\\ 且\therefore 如果a为质数\ f(a)=1-a\\ 当a\%b==0\\ \because a里的元素和b里的元素相乘,\mu不等于0的都在a里了\\ 显然f(a*b)=f(a)\\ \sum_{d|T} d *\mu(d)就可求了,做前缀和的时候把T乘上就好了 分个块,整个式子就可以求了 =d=1ndk=1dnμ(k)k2f(Tn)f(Tm)T=T=1nf(Tn)f(Tm)dTdμ(dT)(dT)2ddT=T=1nf(Tn)f(Tm)dTdμ(d)TdTdμ(d)abdadμ(d)dbdμ(d)dabdμ(d)f(ab)=f(a)f(b)a f(a)=1aa%b==0abμ0af(ab)=f(a)dTdμ(d)T

  1. 好题汇总:
    1. bzoj4407 求 ∑ i = 1 n ∑ j = 1 m g c d ( i , j ) k 求\sum_{i=1}^n\sum_{j=1}^m{gcd(i,j)}^k i=1nj=1mgcd(i,j)k ,最后主要解决的卷积是 h ( d ) = ∑ d ∣ n d k ∗ μ ( n d ) h(d)=\sum_{d|n}d^k*\mu(\frac{n}{d}) h(d)=dndkμ(dn) ,发现只有 p i α ∗ μ ( 1 ) + p i α − 1 ∗ μ ( p i ) p_i^\alpha*\mu(1)+p_i^{\alpha-1}*\mu(p_i) piαμ(1)+piα1μ(pi)有意义,更新即可。
    2. CF1285 F 利用莫比乌斯函数的性质,计算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值