我们把所有大于整数 的质数称作大质数。
现在我们要统计区间 中有多少数其至少有一个约数是大质数。
Constraints
, ,
Solution
先把 至 所有质数预处理出来。记第 个质数为 。令 表示 中所有质因子不大于 的数个数。
分以下几种情况:
若 则
若 且 则
若 则暴力分解 看是否满足。(可以部分预处理)
若 则
否则 (上取整)
最后一种情况的意思是,当前 中质因子不包含 的数。后一个是至少包含一个 的数,可以把 除下去以后递归求解。
以上是官方题解。
以下是另一种写法,原理基本一致。
令 表示在 这个区间中所有质因子均不小于 且不大于 的数个数。
枚举第 个及其后面的质数,递归计算 并累加。由于需要特殊处理 的情况,当 时 初值为 。其余处理细节详见代码。
Code
1 |
|