【NOIP2011模拟9.20】素数密度
Time Limits: 1000 ms Memory Limits: 262144 KB
Description
给定区间[L,R] (L<=R<=2147483647,R-L<=1000000),请计算区间中素数的个数。
Input
两个数L和R
Output
一行,区间中素数的个数。
Sample Input
2 11
Sample Output
5
Hint
- 40%的数据,R≤1e6;
- 60%的数据,R≤1e7;
- 100%的数据,R≤2147483647,且R-L<=1e6。
解题思路
一看这一道题,发现L和R好大啊,我立刻感觉这道题没有希望了,可转念一想,我不能慌,看到到R-L<=1e+6,立刻想到了O(nlogn)这一类的时间复杂度,发现判定质数是由根号内的质数判断的,也就是说,筛出L到R的质数可以以排除L到R的合数来搞,我们枚举根号R内的质数P,再筛区L到R能被P整除的数,筛完后就只剩下质数了,时间复杂度(P为质数集合-):
O(∑i=1,i∈P

该博客介绍了如何解决NOIP2011模拟赛中的素数密度问题,给出了解题思路和时间复杂度分析。通过枚举根号R内的质数,并筛选掉L到R范围内能被这些质数整除的数,可以找到区间内的所有质数,方法具有O(nlogn)的时间复杂度。

448

被折叠的 条评论
为什么被折叠?



