loj #6235. 区间素数个数
#6235. 区间素数个数
题目描述
求 1∼n 1\sim n1∼n 之间素数个数。
输入格式
一行一个数 n nn 。
输出格式
一行一个数,表示答案。
样例
样例输入
10
样例输出
4
样例解释 1
2,3,5,72,3,5,72,3,5,7
数据范围与提示
对于 100% 100\%100% 的数据,2≤n≤1011 2 \leq n \leq 10^{11}2≤n≤1011。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#define maxn 316228
using namespace std;
long long n;
bool vis[maxn];
int lim,p[],sum[maxn],last[maxn*],cnt;
long long val[maxn*],f[maxn*];
void prepare(){
for(int i=;i<=lim;i++){
if(!vis[i])p[++p[]]=i;
sum[i]=sum[i-]+!vis[i];
for(int j=;j<=p[]&&i*p[j]<=lim;j++){
vis[i*p[j]]=;
if(i%p[j]==)break;
}
}
}
int main(){
cin>>n;lim=sqrt(n);
prepare();
for(long long i=;i<=n;i=n/(n/i)+)
val[++cnt]=n/i;
reverse(val+,val+cnt+);
copy(val+,val+cnt+,f+);
for(int i=;i<=p[];i++){
for(int j=cnt;j>=;j--){
long long k=val[j]/p[i];
long long pos=k<=lim?k:cnt+-n/k;
if(k<p[i])break;
f[j]-=f[pos]+last[pos]-i+;
last[j]=i;
}
}
printf("%lld",sum[lim]+f[cnt]-);
return ;
}
loj #6235. 区间素数个数的更多相关文章
- LOJ.6235.区间素数个数(Min_25筛)
题目链接 \(Description\) 给定\(n\),求\(1\sim n\)中的素数个数. \(2\leq n\leq10^{11}\). \(Solution\) Min_25筛.只需要求出\ ...
- loj #6235. 区间素数个数 min_12.5筛
\(\color{#0066ff}{ 题目描述 }\) 求 \(1\sim n\) 之间素数个数. \(\color{#0066ff}{输入格式}\) 一行一个数 n . \(\color{#0066 ...
- loj#6235. 区间素数个数(min25筛)
题意 题目链接 Sol min25筛的板子题,直接筛出\(g(N, \infty)\)即可 筛的时候有很多trick,比如只存\(\frac{N}{x}\)的值,第二维可以滚动数组滚动掉 #inclu ...
- LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...
- LOJ6235 区间素数个数(min_25筛)
题目链接:LOJ 题目大意:看到题目名字应该都知道是啥了吧. $1\le N\le 10^{11}$. 阉割版 min_25 筛.发现答案实际上就是 min_25 筛中 $g(N,pl)$ 的值.(取 ...
- [LOJ6235]区间素数个数
题目大意: 给定$n(n\leq10^{11})$,求$\pi(n)$. 思路: 计算$\pi$函数有$O(n^{\frac23})$的Lehmer算法,这里考虑$O(\frac{n^{\frac34 ...
- Prime Count 求大区间素数个数
http://acm.gdufe.edu.cn/Problem/read/id/1333 https://www.zhihu.com/question/29580448/answer/44874605
- poj 2689Prime Distance(区间素数)埃氏筛法
这道题的L和R都很大,所以如果直接开一个1~R的数组明显会超时.但是R-L并不大,所以我们考虑把这个区间(L--R)移动到(1--(R-L+1))这个区间再开数组(就是把每个数减L再加1).接下来先用 ...
- UVA-10200-Prime Time-判断素数个数(打表预处理)+精度控制
题意: 给出a.b区间,判断区间内素数所占百分比 思路: 注意提前打表和控制精度1e-8的范围足够用了 细节: 精度的处理 判断素数的方法(且返回值为bool) 数据类型的强制转换 保存素数个数 提前 ...
随机推荐
- pcs与crmsh命令比较
一.概念 1.crmsh This project is not part of the GNU Project. Pacemaker command line interface for manag ...
- oracle10g Error in invoking target 'install' of makefile
oracle10g series error error in invoking target 'install' of makefile /u01/app/oracle/oracle/product ...
- Python生成器/推导式/生成器表达式
一 生成器 生成器的本质就是迭代器 生成器的特点和迭代器一样,取值方式和迭代器一样(__next__(), send(): 给上一个yield传值) 生成器一般由生成器函数或者生成器表达式来创 ...
- 在Centos7中安装elasticsearch5.5
在Centos7中安装elasticsearch5.5 第一步:必须要有jre支持 elasticsearch是用Java实现的,跑elasticsearch必须要有jre支持,所以必须先安装jre ...
- JAVA的ByteArrayOutputStream
为什么要使用ByteArrayOutputStream? 我的看法是,有时InputStream里面的内容很大,不能一次读完,需要一个中转站来储存里面的数据,而不是需要一次数据就又打开InputStr ...
- nat123安装启动教程帮助
转自:http://www.nat123.com/Pages_17_291.jsp 本文就nat123安装启动可能遇到的问题及与安全狗影响处理. 下载安装nat123客户端安装包.第一次安装使用,可选 ...
- web界面上的字体兼容方案
原贴地址:http://www.baidufe.com/item/60cd11d3bfdee5c51369.html 做前端的,对web界面基本都抠的很仔细,尤其精确到1px! 类似边距.宽度.高度等 ...
- bash shell笔记5 显示数据
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://twentyfour.blog.51cto.com/945260/521455 知 ...
- OSCache-JSP页面缓存(1)
一.OSCache提供的缓存标签 这是OSCache提供的标签库中最重要的一个标签,包括在标签中的内容将应用缓存机制进行处理,处理的方式将取决于编程者对cache标签属性的设置. 第一次请求到达时,标 ...
- zend studio 字体大小修改,默认编码设置
zend studio的字体感觉很小,很多用户不是很适应,修改方法如下: 第一步:进入设置窗口 windows -> preferences 第二步:进入修改字体的选项卡. Gene ...