题意:

给定区间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. Nginx配置故障转移

    当上游服务器(真实访问服务器),一旦出现故障或者是没有及时相应的话,应该直接轮训到下一台服务器,保证服务器的高可用. 如果上游服务器的某一台宕机了,直接轮训到下一个~ 8080 8081 8082 关 ...

  2. c++程序书写原则

    1.头文件中声明类,数据变量声明为私有,函数声明为公有. 2.所有函数实现放在非main.cpp文件中. 3.main.cpp只写函数的调用接口.

  3. Android studio 添加assets文件夹

    我们知道Eclipse创建的工程默认是有个assets文件夹的,但是Android studio默认没有帮我们创建,那么我们就自己创建一个就好啦. (1)手动创建 在项目的顶部有个下拉,默认选择的是A ...

  4. hdu 6053(To my boyfriend)

    -----------题目链接------------- 题目描述: 给定一个矩阵,定义\(f(A)\) 为矩阵中不同元素的个数.现在要求\(f(A)\)的期望. 解法: 首先来暴力的,复杂度大约:\ ...

  5. [Codeforces 787D] Legacy

    [题目链接] https://codeforces.com/contest/787/problem/D [算法] 线段树优化建边 ,  然后用Dijkstra算法求单源最短路 时间复杂度 : O((N ...

  6. codevs 4768跳石头

    传送门 4768 跳石头  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold  题目描述 Description 一年一度的“跳石头”比赛又要开始了! 这项比赛将在 ...

  7. 关于cuda 环境遇到的问题

    1.error while loading shared libraries: libcudart.so.9.0: cannot open shared object file: No such fi ...

  8. Android开发--AndroidManifest.xml文件解析

    参考文章:http://www.cnblogs.com/pilang/archive/2011/04/20/2022932.html 一.关于AndroidManifest.xml AndroidMa ...

  9. 爬虫库之BeautifulSoup学习(三)

    遍历文档树: 1.查找子节点 .contents tag的.content属性可以将tag的子节点以列表的方式输出. print soup.body.contents print type(soup. ...

  10. 2.11 Hive中数据导入导出Import和Export使用

    https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ImportExport 一.Export.Import Export ...