码迷,mamicode.com
首页 > 其他好文 > 详细

[luoguP1835] 素数密度_NOI导刊2011提高(04)(素数筛)

时间:2017-08-14 20:15:34      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:org   define   noi   clu   数据   cst   素数   ret   需要   

传送门

 

数据辣么大,怎么搞?(L≤R≤2147483647)

注意到R-L≤1000000

所以可以直接筛R-L区间内的数,

但是需要用已知的小的素数筛,

R-L区间内的大部分数肯定能用较小的素数筛去,但是还有一些较大的数,可能等于两个大质数的乘积,没法被筛去。

但是又注意到,数据最大才10位,也就是说我们只需要用位数<=5的素数筛就可以了,所以先预处理出来,直接筛就ok了。

 

#include <cstdio>
#define N 1000001
#define max(x, y) ((x) > (y) ? (x) : (y))

int L, R, cnt, ans;
int prime[N];
bool notprime[N], ansprime[N];

int main()
{
	int i, j;
	scanf("%d %d", &L, &R);
	notprime[0] = notprime[1] = 1;
	for(i = 2; i <= 100000; i++)
	{
		if(!notprime[i]) prime[++cnt] = i;
		for(j = i + i; j <= 100000; j += i) notprime[j] = 1;
	}
	for(i = 1; i <= cnt; i++)
		for(j = max(2, L / prime[i]); j <= R / prime[i]; j++)
			ansprime[j * prime[i] - L] = 1;
	for(i = 0; i <= R - L; i++)
		if(!ansprime[i])
			ans++;
	printf("%d\n", ans);
	return 0;
} 

  

[luoguP1835] 素数密度_NOI导刊2011提高(04)(素数筛)

标签:org   define   noi   clu   数据   cst   素数   ret   需要   

原文地址:http://www.cnblogs.com/zhenghaotian/p/7359637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!