数论题多为一些求和/求值的题目, 多数可以通过莫比乌斯反演/筛法/恒等式等方法来解决.
下面是一些人生经验.
记 (epsilon(n) = [n=1]), (I(n) = 1), (id(n) = n), (S(n) = sum_{i=1}^n i = frac{n(n+1)}2).
-
基本的点积/卷积:
- (f * epsilon = f cdot I = f)
- (I * I = d)
- (id * id = id cdot d)
- ((f cdot id) * id = id cdot (f * I))
-
- 交换律, 结合律, 对加法分配律
- 完全积性函数, 点积对卷积有分配律:
(f) 完全积性 (如 (id), (I)), 那么有 (f cdot (g * h) = (g cdot f) * (h cdot f)) - 逆运算:
- 对于数论函数 (f) 且 (f(1) ot= 0), 存在 (g) 为其逆函数, 即 (f * g = epsilon);
- 特别的, (mu * I = epsilon), 即 (mu) 为 (I) 的逆函数
-
关于函数的积性
- 积性函数的卷积是积性函数.
- 积性函数 (f(x)), (g(x)).
(A(x) = f cdot g = f(x)g(x)) 是积性函数,
(B(x) = (f cdot g) * 1 = sum_{i|x} f(i)g(i)) 也为积性函数.
-
有关 (phi) 和 (mu)
- (phi * I = id) (替换n)
- (mu * I = epsilon) (替换[n=1])
- (mu * id = phi) (
一般用到这个公式的时候都说明做麻烦了) - ((phi cdot id^k) * id^k = id^{k+1} quad (forall k ge 0))
- ((mu cdot id^k) * id^k = epsilon quad (forall k ge 0))
- 记 (P_s(v)) 表示 (v) 的质因子集合, 则若 (P_s(a) supseteq P_s(b)), 有 (phi(ab) = phi(a) * b)
- (phi (i^k) = i^{k-1} phi(i))
- (sigma=sigma*epsilon=(I*id)*(I*mu)=(I*I)*(id*mu)=d*phi)
- (sigma) 为约数和函数, 即 (sigma = id * I)
-
求值方法:
- 正常方法(莫反/筛法)
- 调和级数(O(n log n))
- (sum_{i=1}^n frac n{i^2} = O(frac{pi^2}6 cdot n) sim O(n))
- 积性函数筛((O(n)))/单点求值((O(log n * T)))
- 关于卷积 (h = f*g) 的线性筛: [2]2
- 形式化的, 有
[h(n) = egin{cases} 1 & ext{if} & n = 1 \ sum_{d=0}^{k} f(p^d) g(p^{k-d}) & ext{if} & n = p^k \ h(p^k)h(m) & ext{else let} & n = p^k m & ext{where} & gcd(p^k, m) = 1 end{cases} ]- 对于第二部分, 可以 (O(k)) 暴力维护.
- 在 [2] 中证明了这样的总时间复杂度为 (O(n)).
-
[sum_{i=1}^n i cdot [(i,n)=1] = frac{phi(n)*n+epsilon(n)}2 = egin{cases} 1 & (n=1) \ frac{phi(n)*n}2 & (n>1) end{cases} ]
-
设 (n=prod_{i=1}^k p_i^{alpha_i}), 有
[sum_{d|n} mu (d) cdot d = prod_{i=1}^k (1-p_i) ] -
(约数个数和)
[d(ij)=sum_{x|i}sum_{y|j}[(x,y)==1] ] -
(约数研究)
[sum_{i=1}^n left[ frac{n}{i} ight] = sum_{i=1}^n d(i) ] -
(luogu4902 乘积)
设 (a_i = left[ frac{n}{i} ight]). 若 (x ightarrow (x + 1)), 那么[a_i' = egin{cases} a_i & (i mid (x+1)) \ a_i + 1 & (i mid (x+1)) end{cases} ] -
有关约数的复杂度
[sum_{i=1}^n d(i) = O(nlog n) ](调和级数)
[sum_{i=1}^n d^2(i) = O(nlog^3 n) ](据 hihocoder #1867: GCD; 不会证)
-
其他的复杂度
- (n le 10^8), (d(n) le 800)
- (n le 10^{18}), (d(n) le 10^5)
- (n le 10^{8}), (sum_{i=1}^n phi(n) le 4*10^{14})