【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