【CodeVS3223】素数密度

Description

给定区间[L, R](L <= R <= 2147483647,R-L <= 1000000),请计算区间中素数的个数。

Input

两个数L和R

Output

一行,区间中素数的个数

Sample Input

2 11

Sample Output

5

HINT

详见试题

题解

筛出2-sqrt(r)中的素数,然后用这些数筛l-r中的素数

pri存2-sqrt(r)中的素数

dpri 存r-l中的素数(向左平移l个)

#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
bool pri[50000000];
bool dpri[1000010];

long long l,r,q,cnt,ans,q2;
int main()
{
	memset(pri,true,sizeof(pri));
	memset(dpri,true,sizeof(dpri));
	cin>>l>>r;
	pri[1]=false;
	for (int i=2;i<=ceil(sqrt(r));i++){
		if (pri[i]){
			q=i;
			while (q<ceil(sqrt(r))){
				q+=i;
				pri[q]=false;
			}
			for (q2=l;q2%i&&q2<r;q2++);
			while (q2<=i)q2+=i;
			while(q2<=r){
				dpri[q2-l]=false;
				q2+=i;
			}
		}
	}
	for (int i=l;i<=r;i++) if (dpri[i-l]) ans++;
	cout<<ans;
}

  

时间: 2024-10-16 03:21:17

【CodeVS3223】素数密度的相关文章

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

传送门 数据辣么大,怎么搞?(L≤R≤2147483647) 注意到R-L≤1000000 所以可以直接筛R-L区间内的数, 但是需要用已知的小的素数筛, R-L区间内的大部分数肯定能用较小的素数筛去,但是还有一些较大的数,可能等于两个大质数的乘积,没法被筛去. 但是又注意到,数据最大才10位,也就是说我们只需要用位数<=5的素数筛就可以了,所以先预处理出来,直接筛就ok了. #include <cstdio> #define N 1000001 #define max(x, y) ((

洛谷 P1835 素数密度_NOI导刊2011提高(04)题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置. 题目链接:https://www.luogu.org/problem/show?pid=1835 题目描述 给定区间[L,R](L≤R≤2147483647,R-L≤1000000),请计算区间中素数的个数. 输入输出格式 输入格式: 两个数L和R. 输出格式: 一行,区间中素数的个数. 输入输出样例 输入样例#1: 2 11 输出样例#1: 5 分析:裸的区间素数筛.代码中有详细注释(其中区间素数筛函数大部分借用了<挑战程序

数论_埃氏筛法(求区间内多少素数)

埃拉托斯特尼(公元前276-公元前194) 埃拉托斯特尼是古希腊著名的数学家.地理学家.天文学家.他先在亚历山大港学习,后又转至雅典.公元前236年,托勒密三世指定他为亚历山大图书馆的图书管理员和馆长.他跟阿基米德是好朋友.埃拉托斯特尼的主要贡献包括: 埃拉托斯特尼筛法:寻找素数的方法. 地理常数测量:日地间距的测量(现在称一个这样的距离为一个天文单位).地月间距的测量.测量赤道与黄道之间的偏角.地球半径测量等. 精确地图绘制:当时只有托勒密等级的人物能绘出同等级的地图. 算法数学原理:埃拉托斯

【68测试20161117】【数论】【乱搞】【前缀和】

第一题: 素数密度:给一个区间[L,R],求区间中的素数的个数.L.R<=214748367,L-R<=1000000 解:看到这么大的数据都有点慎得慌.首先,根据筛数法,这么大的数只需要筛sqrt(r)大的素数就可以了.把1~sqrt(r)的素数筛出来,然后用这些素数筛L~R的数. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm>

手机分辨率基础知识(DPI,DIP计算)

1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 Aspect Ratio(宽高比率) 指的是实际的物理尺寸宽高比率,分为long和nolong Milestone是16:9,属于long Resolution(分辨率) 和电脑的分辨率概念一样,指手机屏幕纵.横方向像素个数 Milestone是854*480 DPI(dot per inch) 每英

HDU校赛 | 2019 Multi-University Training Contest 3

2019 Multi-University Training Contest 3 http://acm.hdu.edu.cn/contests/contest_show.php?cid=850 1004. Distribution of books 考虑二分答案,设当前二分出来的是\(x\). 设\(f_i\)表示前\(i\)个能分成最多的段数,使得每一段和都\(\leqslant x\). 转移显然,枚举一个\(j\),若\(s_i-s_j\leqslant x\)则转移,\(s_i\)表示前

数论函数与莫比乌斯反演

数论函数 取整函数 定义 对于实数 \(x\),记 \(?x?\) 为不超过 \(x\) 的最大整数. \(\lfloor x \rfloor\) 也是满足如下关系的唯一整数: \(\lfloor x \rfloor ≤x<\lfloor x \rfloor+1\) 对于正整数 \(n\),\(1\) 到 \(n\) 中 \(d\) 的倍数有 \(?\frac{n}{d}?\) 个 性质1 对于任意的 \(x\) 与正整数 \(a\),\(b\),我们均有: \[ ??\frac{x}{a}?/

【2019.10.25】

summary 分情况拿分保底真的很好用 像我这种辣鸡应该注意保底 打题不要慌 有条理 不要东一条西一条 小奇采药 对于 30% 的数据,O(2n ) 枚举取 or 不取 对于 60% 的数据,O(nm) 做 01 背包,即 f(i, j) 表示前 i 株 草药,耗费 j 的时间能达到的最?代价. 对于 100% 的数据,注意到 m,t,v 纯随机 那么不会选太多的草药,?耗时较少的草药有很?概率存在 于最优解中 针对这些性质优化搜索 当然也可以合理使用随机化和卡时,复杂度 O(?学) 最基础6

数论函数——莫比乌斯反演

一些函数的一些性质 取整函数 \(\lfloor x \rfloor\) (一)\(\lfloor x \rfloor <= x < \lfloor x \rfloor +1\) (二)对任意x与正整数a,b\(\lfloor \lfloor \frac{x}{a} \rfloor /b\rfloor=\lfloor \frac{x}{ab}\rfloor\) (三)对于正整数n,1 -- n中d的倍数个数为 \(\lfloor \frac{n}{d} \rfloor\) (四)若n为正整数,