/*
判断一个数是否是素数,只要判断这个数有没有在[2,sqrt(n)]区间的因子
同样,对于大数短区间的筛选,同样可以用这种判断方式,
先筛出sqrt(n)范围内的素数,然后用这些素数去筛出区间内的因子
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 1000000
#define ll long long int v[maxn],prime[maxn],m;
void init(){
memset(v,,sizeof v);
memset(prime,,sizeof prime);
m=;
for(int i=;i<maxn;i++){
if(v[i]==){
v[i]=i;
prime[++m]=i;
}
for(int j=;j<=m;j++){
if(prime[j]>v[i] || prime[j]*i>maxn)break;
v[i*prime[j]]=prime[j];
}
}
} int flag[maxn];
ll solve(ll a,ll b){
memset(flag,,sizeof flag); for(int i=;i<=m;i++){
if(prime[i]*prime[i]>b)break;
ll s=(a+prime[i]-)/prime[i];//s是区间内第一个prime[i]的倍数 if(s<)s=;//如果本身就是这个素数,即s==1,那么这个倍数就不用删掉就不用删掉
for(s=prime[i]*s;s<=b;s+=prime[i])
flag[s-a]=;
} ll ans=;
for(int i=;i<=b-a;i++)
ans+=-flag[i];
return ans;
} int main(){
int T;
init();
cin>>T;
for(int tt=;tt<=T;tt++){
ll a,b;
cin>>a>>b;
ll ans=solve(a,b);
if(a==)ans--;
printf("Case %d: %lld\n",tt,ans);
}
}

lightoj1197 素数双筛,可以参考poj的那题双筛的更多相关文章

  1. poj 2262 Goldbach's Conjecture——筛质数(水!)

    题目:http://poj.org/problem?id=2262 大水题的筛质数. #include<iostream> #include<cstdio> #include& ...

  2. POJ 3352 无向图边双连通分量,缩点,无重边

    为什么写这道题还是因为昨天多校的第二题,是道图论,HDU 4612. 当时拿到题目的时候就知道是道模版题,但是苦于图论太弱.模版都太水,居然找不到. 虽然比赛的时候最后水过了,但是那个模版看的还是一知 ...

  3. POJ推荐50题

    此文来自北京邮电大学ACM-ICPC集训队 此50题在本博客均有代码,可以在左侧的搜索框中搜索题号查看代码. 以下是原文: POJ推荐50题1.标记“难”和“稍难”的题目可以看看,思考一下,不做要求, ...

  4. 最短路+线段交 POJ 1556 好题

    // 最短路+线段交 POJ 1556 好题 // 题意:从(0,5)到(10,5)的最短距离,中间有n堵墙,每堵上有两扇门可以通过 // 思路:先存图.直接n^2来暴力,不好写.分成三部分,起点 终 ...

  5. POJ 2689.Prime Distance-区间筛素数

    最近改自己的错误代码改到要上天,心累. 这是迄今为止写的最心累的博客. Prime Distance Time Limit: 1000MS   Memory Limit: 65536K Total S ...

  6. poj 3694 Network 边双连通+LCA

    题目链接:http://poj.org/problem?id=3694 题意:n个点,m条边,给你一个连通图,然后有Q次操作,每次加入一条边(A,B),加入边后,问当前还有多少桥,输出桥的个数. 解题 ...

  7. Sum of Consecutive Prime Numbers POJ - 2739 线性欧拉筛(线性欧拉筛证明)

    题意:给一个数 可以写出多少种  连续素数的合 思路:直接线性筛 筛素数 暴力找就行   (素数到n/2就可以停下了,优化一个常数) 其中:线性筛的证明参考:https://blog.csdn.net ...

  8. POJ 3126 - Prime Path - [线性筛+BFS]

    题目链接:http://poj.org/problem?id=3126 题意: 给定两个四位素数 $a,b$,要求把 $a$ 变换到 $b$.变换的过程每次只能改动一个数,要保证每次变换出来的数都是一 ...

  9. POJ 2689 - Prime Distance - [埃筛]

    题目链接:http://poj.org/problem?id=2689 Time Limit: 1000MS Memory Limit: 65536K Description The branch o ...

随机推荐

  1. java SPI & spring factories

    SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制.SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实现,你只需要添加 ...

  2. 添加,删除List<Map<String, Object>>元素

    这里讲对List<Map<String, Object>>的数据结构的添加和删除实例 添加 //初始化 List<Map<String, Object>> ...

  3. 【编程拾遗】C++的static成员函数与单例模式

    static小结 static的引入 static 是C++中非经常常使用的修饰符,它被用来控制变量的存储方式和可见性. 函数内部定义的变量,在程序运行到它的定义处时,编译器为它在栈上分配空间,函数在 ...

  4. Queue和BlockingQueue的使用以及使用BlockingQueue实现生产者-消费者

    Java提供了两种新的容器类型:Queue和BlockingQueue. Queue用于保存一组等待处理的元素.它提供了几种实现,包括:ConcurrentLinkedQueue,这是一个先进先出的并 ...

  5. Hibernate学习(三)

    Hibernate的查询方法(五种) 一.OID查询:按主键查询 --get( ) --load( ) 二.对象导航查询:通过已经查询到的联系人,得到起关联的对象 三.SQL查询 四.HQL查询(** ...

  6. 2017-2018-2 20165325 实验二《Java面向对象程序设计》实验报告

    一.面向对象程序设计-1 1.检查点要求 参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 参考 http://www.cnblo ...

  7. Charles for MAC配置与使用

    Charles已成为网络接口数据抓取的利器之一,无论是作为开发人员还是测试人员,在实际开发及调试中都需要通过网络数据接口的抓取来进行数据正确性的验证及异常的排查.Charles抓取网络接口数据的原理就 ...

  8. Python-有关文件操作,函数调用几道练习:

    1.写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批了修改操作 2.写函数,计算传入字符串中[数字].[字母].[空格] 以及 [其他]的个数 3.写函数,判断用户传入的对象(字符串. ...

  9. 关于Anaconda的环境和包管理

    Anaconda相对于原生python解释器具有更好的包管理功能,它有一个env文件夹,里面包含所要管理的所有环境:日常操作时我们可能会使用pytorch.Tensorflow等多个环境,由于每个环境 ...

  10. Shell-自动建立全国城市

    Code: #!/bin/bash function mkdirFun() { if [ ! -d $1 ];then mkdir -p $1 fi } filename=city1.txt date ...