题意:

给定区间L,R。

计算区间中素数个数。

2 <= L,R <= 2147483647, R-L <= 1000000。

思路:

素数区间筛

先筛(2-sqrt(r))。

再用(2-sqrt(r))中的素数筛(l-r)。

代码:

1.自己写的区间筛,将筛2-sqrt(r) 分开了。

#include <iostream>
#include <string>
#include <queue>
#include <memory.h>
#include <math.h>
using namespace std;
typedef long long LL;
const int MAXN = 1000010;
int isPrimersmall[MAXN];
int isPrimer[MAXN]; int main()
{
LL l,r;
scanf("%lld%lld",&l,&r);
isPrimersmall[0] = 1;
isPrimersmall[1] = 1;
int x = sqrt(r);
for (int i = 2;i<=x;i++)
{
if (isPrimersmall[i] == 0)
{
for (int j = i * i; j <= x; j += i)
isPrimersmall[j] = 1;
}
}
for (int i = 2;i<=x;i++)
{
if (isPrimersmall[i] == 0)
{
for (int j = (int)((l + (i-1))/ i) * i;j <= r; j += i)
{
if (j != i)
isPrimer[j-l] = 1;
}
}
}
int sum = 0;
for (int i = 0;i<=r-l;i++)
{
if (isPrimer[i] == 0)
sum++;
}
printf("%d\n",sum); return 0;
}

  

2.将筛(2-sqrt(r))和(l-r)放在一起筛。

#include <iostream>
#include <string>
#include <queue>
#include <memory.h>
#include <math.h>
using namespace std;
typedef long long LL;
const int MAXN = 1000010;
int isPrimersmall[MAXN];
int isPrimer[MAXN]; int segement_sieve(LL a,LL b)
{
for (LL i = 0;i*i <= b;i++)
isPrimersmall[i] = 1;
for (LL i = 0;i <= b-a;i++)
isPrimer[i] = 1; for (LL i = 2;i*i <= b;i++)
{
if (isPrimersmall[i])
{
for (LL j = i*2;j*j <= b;j+=i)
isPrimersmall[j] = 0;
for (LL j = max(2LL,(a+i-1)/i) * i;j <= b ;j+=i)
isPrimer[j-a] = 0;
}
}
int sum = 0;
for (int i = 0;i <= b-a;i++)
if (isPrimer[i])
sum++;
return sum;
} int main()
{
LL a,b;
scanf("%lld%lld",&a,&b);
printf("%d\n",segement_sieve(a,b)); return 0;
}

  

AKOJ-1695-找素数的更多相关文章

  1. java实现找素数

    ** 找素数** 素数就是不能再进行等分的整数.比如:7,11.而9不是素数,因为它可以平分为3等份.一般认为最小的素数是2,接着是3,5,- 请问,第100002(十万零二)个素数是多少? 请注意: ...

  2. java多线程找素数实例

    package ltb20180106; public class FindPrime implements Runnable{ private int prime; private int q; p ...

  3. 【NHOI2018】找素数

    [题目描述] 素数又称质数,是指一个大于 1 的正整数,如果除了 1 和它本身以外,不能再被其它的数整除,例如:2.3.5.97 等都是素数.2 是最小的素数. 现在,给你 n 个数字,请你从中选取一 ...

  4. Demo03找素数

    package Deom1;import java.awt.*;import java.util.Scanner;public class lx {//输入任意两个正整数,求出这两个正整数之间素数的个 ...

  5. Python 素数判断;以及默尼森数

    1. 素数/质数 只能被2或者本身整除的正整数. 2. 默尼森数 P是素数且M也是素数,并且满足等式M=2^P-1,则称M为默尼森数. 编程小要求: 输出前5个默尼森数 1)最外层循环找素数 中间层循 ...

  6. java实现简单的素数判断

    素数的这个问题由来已久,大学刚接触语言的时候遇到过找素数的问题,找工作笔试的时候也遇到过素数的问题,今天就特地写这篇博文,缅怀一下. 一.什么是素数? 除了1和它本身以外不再有其他的除数整除. 二.判 ...

  7. 数学#素数筛法 HDU 4548&POJ 2689

    找素数本来是很简单的问题,但当数据变大时,用朴素思想来找素数想必是会超时的,所以用素数筛法. 素数筛法 打表伪代码(用prime数组保存区间内的所有素数): void isPrime() vis[]数 ...

  8. 枚举1--求小于n的最大素数

    枚举1--求小于n的最大素数 总结: 素数是不能被比它小的素数整除. /* 枚举就是基于已有知识镜像答案猜测的一种问题求解策略 问题:求小于n的最大素数 分析: 找不到一个数学公式,使得根据N就可以计 ...

  9. 找小于N 的所有质数

    笔试题目当中,找素数出现的几率有点大.昨天就做了一个,感觉不是很难,但可以考查程序员的数学和编码功底. 用嵌套循环来实现是很理想的,怎样减少循环的次数?怎样求出小于N的所有质数? 不可能将一个数除与所 ...

  10. 【练习总结】题目:筛法遍历素数(Java)

    初学Java,学到流程控制的循环,有个练习题是暴力遍历素数. 因为看过av32186751,知道有个筛法,就想试试. 又受到线性筛法(一)--素数筛法(一) - nerd呱呱 - 博客园中,的这段启发 ...

随机推荐

  1. @GetMapping和@PostMapping接收参数的格式

    一.1.使用@Controller 注解,在对应的方法上,视图解析器可以解析return 的jsp,html页面,并且跳转到相应页面 若返回json等内容到页面,则需要加@ResponseBody注解 ...

  2. 服务化之Netty

    关于Netty的介绍可参考:https://www.zhihu.com/question/24322387 Netty官网为:http://netty.io/ Git:https://github.c ...

  3. MFC窗口消息PostMessage和SendMessage

    以前这些消息用得比较少,但是今天碰到了个事儿,我看非用消息不可. 事情是这样的,我在线程中需要刷新对话框上面的内容,但是每每执行到UpdateData时就出现了断言错误. 查了相关资料,发现这个可能是 ...

  4. Redis缓存服务搭建及实现数据读写 - Eric.Chen

    发现博客园中好多大牛在介绍自己的开源项目是很少用到缓存,比如Memcached.Redis.mongodb等,今天得空抽时间把Redis缓存研究了一下,写下来总结一下,跟大家一起分享 一下.由于小弟水 ...

  5. Jquery Plugin模版

    1. [代码][JavaScript]代码 01// remember to change every instance of "pluginName" to the name o ...

  6. 万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid

    五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又 ...

  7. coeforces 665D D. Simple Subset(最大团orsb题)

    题目链接: D. Simple Subset time limit per test 1 second memory limit per test 256 megabytes input standa ...

  8. python操作oracle数据库

    本文主要介绍python对oracle数据库的操作学习 包含:oracle数据库在Windows操作系统下的安装和配置.python需要安装的第三方拓展包以及基本操作的样例学习. 1          ...

  9. Python: PS 滤镜--旋转模糊

    本文用 Python 实现 PS 滤镜中的旋转模糊,具体的算法原理和效果可以参考之前的博客: http://blog.csdn.net/matrix_space/article/details/392 ...

  10. python虚拟环境管理包virtualenvwrapper

    1.打开cmd 2.安装virtualenvwrapper pip install virtualenvwrapper-win 3.配置虚拟环境的位置 新建系统变量默认在c盘 4.新建虚拟环境 mkv ...