题目链接:https://vjudge.net/problem/LightOJ-1197

题目大意:

  给你 a 和 b (1 ≤ a ≤ b < 231, b - a ≤ 100000),求出 [a,b] 中所有质数的个数。

解题思路:

  要找出 [a,b] 中的所有素数,只需要知道 [0,sort(b)] 中的所有素数(在本题中这一部分我们可以打出 [0,1e5] 的素数表),然后用类似素数筛的方法,筛掉 [a,b] 中的所有合数,剩下的就是素数。

AC代码:

 #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm> using namespace std;
typedef long long ll;
const int maxn=1e5+;
bool be_prim[maxn],temp[maxn];
ll prim[maxn],cnt;
void init(){
memset(be_prim,true,sizeof(be_prim));
be_prim[]=be_prim[]=false;
cnt=;
for(ll i=;i<(ll)maxn;i++){
if(be_prim[i]){
prim[cnt++]=i;
for(ll j=i*i;j<(ll)maxn;j+=i) be_prim[j]=false;
}
}
} int main(){
init();
int T;
ll a,b;
scanf("%d",&T);
for(int t=;t<=T;t++){
scanf("%lld%lld",&a,&b);
if(b<){
printf("Case %d: 0\n",t);
continue;
}
if(a<) a++;
memset(temp,true,sizeof(temp));
ll ans=b-a+;
for(ll i=;i<cnt&&prim[i]*prim[i]<=b;i++){
ll st=max(2LL,((a-)/prim[i]+))*prim[i];
while(st<=b){
if(temp[st-a]) ans--,temp[st-a]=false;
st+=prim[i];
}
}
printf("Case %d: %lld\n",t,ans);
}
return ;
}

  

LightOJ1197的更多相关文章

  1. LightOJ1197 Help Hanzo —— 大区间素数筛选

    题目链接:https://vjudge.net/problem/LightOJ-1197 1197 - Help Hanzo    PDF (English) Statistics Forum Tim ...

  2. lightoj1197 素数双筛,可以参考poj的那题双筛

    /* 判断一个数是否是素数,只要判断这个数有没有在[2,sqrt(n)]区间的因子 同样,对于大数短区间的筛选,同样可以用这种判断方式, 先筛出sqrt(n)范围内的素数,然后用这些素数去筛出区间内的 ...

  3. lightoj1197区间素数筛

    模板题,不过好像有点问题,当a==1的时候,答案把一也算进去了,要减去 #include<map> #include<set> #include<cmath> #i ...

  4. LightOJ1197【数学】

    引自:WONTER 题意: 给你两个数,a,b,让你求区间[a,b]里面有多少个素数: 思路: 首先要知道,我们要想筛 [1, b] 中所有的素数,只需要用到 [1, sqrt(b)] 中的所有素数来 ...

  5. LightOj 1197 - Help Hanzo(分段筛选法 求区间素数个数)

    题目链接:http://lightoj.com/volume_showproblem.php?problem=1197 题意:给你两个数 a b,求区间 [a, b]内素数的个数, a and b ( ...

随机推荐

  1. Flutter自己实现一个ProgressHUD

    用惯了iOS的SVProgressHUD,但是在flutter pub上的并没有找到类似的实现,于是自己实现一个 主要实现四个基本功能 Loading显示 成功显示 错误显示 进度显示:环形进度条和文 ...

  2. 记一次Pinpoint监控工具部署过程

    环境:Centos 7.4 X64IP:192.168.1.11 1.配置环境,先安装jdk 到Oracle官网下载安装JDK https://www.oracle.com/technetwork/j ...

  3. MacBook Pro装Win7后喇叭没有声音

    将MacBook的系统由XP改为Win7 64位后,发现喇叭没有声音了,装了bootcamp并升级到3.2版本都无济于事,google了下,发现还是驱动的问题,Win7下在设备管理器中看到声卡为Hig ...

  4. Linux从入门到精通系列之NFS

    网络文件系统(NFS,Network File System)是一种将远程主机上的分区(目录)经网络挂载到本地系统的一种机制,通过对网络文件系统的支持,用户可以在本地系统上像操作本地分区一样来对远程主 ...

  5. 几个加速Swift开发的小tip

    又是周五了,周末不要浪,一起学点Swift!本周再次为大家带来了一些Swift的小技巧,都是些奇淫巧计,不知道也无妨,但Swift最吸引我的一点就是它的简洁易用.主要内容有: private(set) ...

  6. 51 NOD 1049 最大子段和 动态规划 模板 板子 DP

    N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,- ...

  7. muduo网络库源码学习————日志类封装

    muduo库里面的日志使方法如下 这里定义了一个宏 #define LOG_INFO if (muduo::Logger::logLevel() <= muduo::Logger::INFO) ...

  8. 程序猿使用Python的tkinter库进行GUI编程肯定要会的事件处理

    事件类型用户通过鼠标.键盘.游戏控制设备在与图形界面交互时,就会触发事件.tkinter事件通常采用了将事件名称放置于尖括号内的字符串表示,尖括号中的内容我们称之为事件类型.事件类型有其通用的定义方式 ...

  9. 《Docker从入门到跑路》之镜像和容器的基本操作

    一.获取镜像 官方提供了一个公共镜像仓库Docker Hub,默认是从这上面获取镜像的. 搜素镜像使用docker search 命令: # docker search --help Usage: d ...

  10. 【FPGA篇章一】FPGA工作原理:详细介绍FPGA实现编程逻辑的机理

    欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 FPGA(Field Programmable Gate Array),即现场可编程逻辑门阵列,它是作为专用集成电路(ASIC)领域中一种半 ...