数论笔记

欧拉函数通项
ϕ ( n ) = n ∏ p ( 1 − 1 p ) \phi(n) =n\prod_{p}(1-\frac{1}{p}) ϕ(n)=np(1p1)

莫比乌斯

g ( m ) = ∑ d ∣ m f ( d )    ⟺    f ( m ) = ∑ d ∣ m μ ( d ) ∗ g ( m / d ) g(m) = \sum_{d|m}f(d) \iff f(m)=\sum_{d|m}\mu(d)*g(m/d) g(m)=dmf(d)f(m)=dmμ(d)g(m/d)
g ( d ) = ∑ d ∣ k f ( k )    ⟺    f ( d ) = ∑ d ∣ k μ ( k / d ) ∗ g ( k ) g(d)=\sum_{d|k}f(k)\iff f(d)=\sum_{d|k}\mu(k/d)*g(k) g(d)=dkf(k)f(d)=dkμ(k/d)g(k)

莫比乌斯函数

常用公式

  • [ m = = 1 ] = ∑ d ∣ m μ ( d ) [m==1] = \sum_{d|m}\mu(d) [m==1]=dmμ(d)

杜教筛

复杂度 O ( n 2 / 3 ) O(n^{2/3}) O(n2/3)

常见形式

f ( n ) f(n) f(n) 为数论函数,计算 S ( n ) = ∑ i = 1 n f ( i ) S(n)=\sum_{i=1}^nf(i) S(n)=i=1nf(i)
根据 f ( n ) f(n) f(n) 的性质,构造 S ( n ) S(n) S(n) 关于 S ( ⌊ n i ⌋ ) S(\lfloor \frac{n}{i} \rfloor) S(in) 的递推式,找到一个 g ( x ) g(x) g(x)
∑ i = 1 n ∑ d ∣ i f ( d ) g ( i d ) = ∑ i = 1 n g ( i ) S ( ⌊ n i ⌋ ) \sum_{i=1}^n\sum_{d|i}f(d)g(\frac{i}{d})=\sum_{i=1}^ng(i)S(\lfloor \frac{n}{i} \rfloor) i=1ndif(d)g(di)=i=1ng(i)S(in)
可以的到递推式 g ( 1 ) S ( n ) = ∑ i = 1 n ( f ∗ g ) ( i ) − ∑ i = 2 n g ( i ) S ( ⌊ n i ⌋ ) g(1)S(n)=\sum_{i=1}^n(f*g)(i)-\sum_{i=2}^ng(i)S(\lfloor \frac{n}{i} \rfloor) g(1)S(n)=i=1n(fg)(i)i=2ng(i)S(in)
当可以对 ( f ∗ g ) ( i ) (f*g)(i) (fg)(i) 以及 g ( i ) g(i) g(i) 快速求和时 就能做了
然后预处理出前 n 2 / 3 n^{2/3} n2/3 f ( i ) f(i) f(i) 可以加快复杂度到 O ( n 2 / 3 ) O(n^{2/3}) O(n2/3)
1 / 3 1/3 1/3 hash并不用map,注意到这个数部分肯定是某个 n / i n/i n/i ,我们只要按i来存就可以了

常用公式

  • ∑ i = 1 n ∑ d ∣ i g ( i / d ) f ( d ) = ∑ i = 1 n g ( i ) ∑ d = 1 ⌊ n / d ⌋ f ( d ) \sum_{i=1}^{n}\sum_{d|i}g(i/d)f(d)=\sum_{i=1}^{n}g(i)\sum_{d=1}^{\lfloor n/d \rfloor}f(d) i=1ndig(i/d)f(d)=i=1ng(i)d=1n/df(d)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值