P11419 D1T3 pi(n)
\(\text{Lemma 1}:\sum \limits^n_{i = 1} 2^{\omega(i)} \equiv 1 + \sum \limits_{p \in \mathbb{P},p^k \le n} 2 \pmod 4\),其中 \(\mathbb{P}\) 为质数集,\(\omega(n)\) 为 \(n\) 含有不同的素因子的个数。
\(\text{Proof}:\) 首先我们注意到当 \(\omega(i) \ge 2\) 的时候 \(2^{\omega(i)}\) 是没有贡献的。所以我们只需要考虑 \(i = 1\) 和 \(i = p^k\) 的情况。
\(\text{Lemma 2}: \pi(n) = \dfrac{\sum \limits^n_{i=1} 2^{\omega(i)} - 1}{2} - \sum \limits_{p \in \mathbb{P},p^k \le n,k \ge 2} 1\)
\(\text{Proof}:\) 根据上面那个可以得出。
\(\text{Lemma 3}:2^{\omega(n)} = \sum \limits_{d \mid n} \mu^2(d)\)。
\(\text{Proof}:\) 发现 \(2^{\omega(n)}\) 的实际意义就是在 \(\omega(n)\) 个奇数里面随便挑然后组合起来的种数,那么组合出来的每一个数在分解完质因数后一定是若干个一次项相乘。
接下来考虑将 \(\sum^n_{i = 1}2^{\omega(i)}\) 拆开:
考虑对于 \(\lfloor \frac{n}{k^2} \rfloor\) 做整除分块,然后求出 \(\sum \sigma_0(i)\) 之后就可以求出 \(\sum \limits^n_{i=1} 2^{\omega(i)}\) 了。至于如何求出 \(\sum \sigma_0(i)\) 可以参考 SP26073。然后用线性筛筛出 \(\sum \limits_{p \in \mathbb{P},p^k \le n,k \ge 2} 1\) 即可。
没写代码。

浙公网安备 33010602011771号