复习了一下 min_25 筛.
考虑化简 $f(n)=\prod_{d|n} \mu(d)$ .
当 $n$ 有平方因子时, $f(n) = 0$ ,否则我们考虑有几个 $\mu(d)=-1$ ,就可以算出 $\mu(n)$ .
记 $n$ 有 $\omega(n)$ 种不同的质因子,由于 $n$ 没有平方因子,所以各个质因子的次数都是 $1$ .
$d$ 是 $n$ 的约数可以看做从 $\omega(n)$ 个质因子中选出一些乘起来组成的,而 $\mu(d)=-1$ 等价于选了奇数个.
那么显然有 $2^{\omega(n)-1}$ 种选法,只有当 $n$ 为质数时有奇数个 $\mu(d)=-1$ ,其他情况都有偶数个.
于是可以得出
$$
ans=\sum_{i=1}^n\mu^2(i) -\sum_{i=1}^n 2\times [i\in Prime]
$$
后者是 $1$ 到 $n$ 中质数个数的 $2$ 倍,可以用 min_25 筛求出.
考虑如何求 $\sum \mu^2(i)$ ,记 $p(n)=\max_{d^2|n} \lbrace d\rbrace$ 表示 $n$ 的最大平方因子,则
$$
\sum_{i=1}^n \mu^2(i) \\
=\sum_{i=1}^n [p(i)=1] \\
=\sum_{d=1}^n \mu(d) \sum_{d|p(i)}1 \\
=\sum_{d=1}^n\mu(d) \sum_{d^2|i} 1\\
=\sum_{d=1}^n \mu(d) \lfloor \frac n {d^2} \rfloor
$$
于是筛出 $\sqrt n$ 以内的 $\mu$ ,就可以在 $O(\sqrt n)$ 内计算出 $\sum \mu^2(i)$ 了.
1 | //%std |