题目描述:
把一个数\(N\)分解质因数,比如\(210=2\times3\times5\times7,8=2\times2\times2\)。设\(f(x)\)即为\(x\)按如上方法分解后得到的数字个数。有多少个数满足\(f(x)\ (x\in [l,r],x \in Z)\)为质数?比如\(8\)就满足要求。
数据范围:
\(1\le l,r\le 10^9\)
\(0\le r-l\le 10^6\)
思路:
我们发现这个范围非常大,所以我们考虑一种筛质数常见的优化方式:只处理 \(\le \sqrt n\) 的所有质数,如果一个数分解完之后还有剩余,则剩下的那个一定是一个质数
对于这个东西的证明 \(\downarrow\)
证明过程
我们等于是需要证明任意一个大于 \(\sqrt n\) 的数的质因数只有一个大于 \(\sqrt n\)
考虑反证法:
如果存在两个大于 \(\sqrt n\) 的数,则两个数的乘积肯定大于 \(n\)
所以只会有一个大于 \(\sqrt n\) 的质数存在。
所以
标签:Prime,le,质数,sqrt,Factor,大于,jag2017autumn,times2 From: https://www.cnblogs.com/Candycar/p/17828804.html