prime

洛谷p1835

题目描述

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

素数的个数。

输入输出

输入

两个数 L 和 R。

输出

一行,区间中素数的个数。

样例

样例输入

2 11

样例输出

5

说明

时空限制

时间限制 1s/testcase

空间限制 32MB

思路

R-L<=1000000

L <= R <= 2147483647

时间上用质数筛能过

求出2~45000的所有质数(sqrt(2147483647)大约是4300+)

然后将所有是这些质数的倍数的数删掉,剩下的就是质数

空间上只有32mb,数组不能开太大,考虑到R-L<=1000000

完全可以只开到100005,之后对于大于100000的L和R,在存质数时

减去L即可。

代码

/*
b[i]==1 i不是质数
b[i]==0 i是质数
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int i,j,k,l,t,n,m,ans;
int zhi[100005];
bool b[100005],z[1000005];
inline int read() {
int x=0,w=1;
char ch=0;
while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0'&&ch<='9')x=x*10+ch-48,ch=getchar();
return x*w;
}
int main() {
freopen("prime.in","r",stdin);
freopen("prime.out","w",stdout);
for(i=2; i<=sqrt(100000); i++) {
if(!b[i]) {
for(j=2; j<=100000/i; j++) {
b[i*j]=1;
}
}
}
for(i=2; i<=100000; i++)if(!b[i])zhi[++zhi[0]]=i;
n=read();
m=read();
for(i=1; i<=zhi[0]; i++) {
for(j=max(n/zhi[i],1); j<=m/zhi[i]; j++) {
if(j==1)continue;
if(j*zhi[i]<n)continue;
z[zhi[i]*j-n]=1; //平移数组,控制空间大小
}
}
for(i=n-n; i<=m-n; i++) {
if(!z[i])++ans;
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. THE HANDLER_READ_* STATUS VARIABLES
  2. sersync2 实时同步配置
  3. mysql open files
  4. MongoDB 的分组操作 In C#
  5. [UWP小白日记-6]页面跳转过度动画
  6. 【WebGL】《WebGL编程指南》读书笔记——第3章
  7. python MultiProcessing标准库使用Queue通信的注意要点
  8. 拾人牙慧篇之———QQ微信的第三方登录实现
  9. Precision 7520双硬盘无法识别固态硬盘
  10. wpf1
  11. Nginx 常用配置
  12. cmd 命令 添加端口
  13. 创建vue项目的时候遇到:PhantomJS not found on PATH
  14. centos7.0KVM虚拟化
  15. WPF DataGrid多表头/列头,多行头,合并单元格,一列占据多行
  16. ddt 接口框架数据处理调用excel 处理
  17. RabbitMQ理论部分
  18. 编写高质量代码改善C#程序的157个建议——建议148:不重复代码
  19. Java中输入输出流
  20. 7月23号day15总结

热门文章

  1. 附近的人?你zao吗?
  2. 剖析XAML语言
  3. JavaWeb——JDBC
  4. 改善c++程序的150个建议(读后总结)-------10-11
  5. QFNU 10-30 training
  6. 03.21 ICPC训练联盟周赛:UCF Local Programming Contest 2018正式赛
  7. [bug] vue cli 部署在 springboot中报404
  8. [Python] 微信公众号开发 Python3
  9. 服务器硬件必须支持M2 或PCIE才能支持NVME
  10. cent 7 识别exfat