埃氏筛法的一般写法(区间筛法)

问题:

求 $[L, R]$ 之间的素数表

解法:

一个合数 $n$ 的最小素因子不超过 $\sqrt{n}$。

先用埃氏筛法求出 $[1,\lfloor \sqrt{R} \rfloor]$ 上的素数表

再在 $[L, R]$ 上用埃氏筛法求素数

 

const int N(1e5);
bool isprime[N];
int prime[N];
void init(){memset(isprime, -1, sizeof(isprime));isprime[0]=isprime[1]=0;int np=0;for(int i=0; i<N; i++){if(isprime[i]){prime[np++]=i;for(int j=2*i; j<N; j+=i)isprime[j]=0;}}        
}
typedef long long ll;
const int M(1e5);
bool ok[M];
int res[M];
int seive(ll l, ll r){    // l, r >=1memset(ok, -1, sizeof(ok));if(l==1) ok[0]=0;    //error-proneint k=sqrt(r);for(int i=0; prime[i]<=k; i++){ll j=(l+prime[i]-1)/prime*prime;j=max(j, (ll)2*prime[i]);for(; j<=r; j+=prime[i])ok[j-l]=0;}int np=0;for(int i=0; i<=r-l; i++)if(ok[i]) res[np++]=i+(ll)l;return np;
}

 

 更新:

不必先把 $[2, \lfloor \sqrt{R} \rfloor]$ 上的素数存下来。更好的做法是先分别做好 $[2, \lfloor \sqrt{R} \rfloor]$ 和 $[L, R]$ 的表,然后从 $[2, \lfloor \sqrt{R} \rfloor]$ 的表中筛得素数的同时,也将其倍数从 $[L, R]$ 中划去。

const int N=1e6+5, M=sqrt(1e9);bool is_prime[N];
bool is_prime_small[M+1];void segment_seive(int l, int r){   // [l,r]int t=sqrt(r);for(int i=2; i<=t; i++)is_prime_small[i]=true;for(int i=0; i<=r-l; i++)is_prime[i]=true;for(int i=2; i<=t; i++)if(is_prime_small[i]){for(int j=2*i; j<=t; j+=i)is_prime_small[j]=false;for(int j=max(2, (l+i-1)/i)*i; j<=r; j+=i)is_prime[j-l]=false;}
}

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Patt/p/4805212.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

滥用static_沉思滥用:“强力使用,破坏滥用”

滥用static前英国首相本杰明迪斯雷利&#xff08;Benjamin Disraeli&#xff09;曾用过一句古话&#xff0c;说这是三种谎言&#xff1a;“谎言&#xff0c;该死的谎言和统计数据”。 这里的暗示是&#xff0c;统计数字很容易弥补&#xff0c;因此不可靠。 但是&#xff0c;统计…

Cobalt strike加载插件出现乱码

问题描述 插件 加载成功出现乱码 解决方法 在Cobalt strike目录下执行命令指定编码打开客户端解决。 java -Dfile.encodingutf-8 -XX:ParallelGCThreads4 -XX:AggressiveHeap -XX:UseParallelGC -Xms512M -Xmx1024M -jar cobaltstrike.jar1 成功解决

新网站链接提交入口攻略

很多网站没有被收录,也没有排名,经常有SEO站长向我抱怨。其实提升网站收录有方法和诀窍的。下面我详细的为大家分享,如何向百度提交链接,提升网站被的机率。 很多新手站长,网站上线后没有主动的向搜索引擎提交,spider在短期内无法第一时间发现新网站,这个时候我们 需要…

MariaDb数据库管理系统的学习(一)安装示意图

MariaDB数据库管理系统是MySQL的一个分支。主要由开源社区在维护&#xff0c;採用GPL授权许可。开发这个分支的原因之中的一个是&#xff1a;甲骨文公司收购了MySQL后&#xff0c;有将MySQL闭源的潜在风险&#xff0c;因此社区採用分支的方式来避开这个风险。 MariaDB的目的是全…

内置序列化技术

本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题&#xff0c;包括对象创建&#xff0c;并发&#xff0c;序列化&#xff0c;反射等。 它将指导您完成Java掌握的过程&#xff01; 在这里查看 &#xff01; 目录 1.简…

初级前端工程师笔试技巧总结,祝你顺利拿高分

某大型外包公司安排新人去某大型保险公司驻场开发,简单粗暴的衡量一个工程师的水平就是笔试,这个环节是必不可少的,必须要过了笔试题才能算正式的驻场开发,不然只能是支持,消耗公司资源的废柴,一般笔试会有两次机会,我特殊情况考了三次,一套安全题(10题选择题共100分,…

HDU 5439 Aggregated Counting

题目大意&#xff1a; 由1开始不断往数组中添加数 就是按照当前所在位置所在的数表示的个数添加这个数目的数 1 2 2 3 3 后面因为要填4&#xff0c;而4号位置为3&#xff0c;说明之后要填3个4 问题就是给定一个n&#xff0c;找到n出现的最后位置p&#xff0c;再找p出现的最后位…

Ubuntu 安装msfconsole

Ubuntu 安装msfconsole 1.进入到opt目录下 cd /opt/1 2.下载安装文件 msfupdate.erb sudo wget https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb1 3.将文件msfupdate.erb重命名为msfinstal…

域名解析是否生效实时检测(阿里云DNS检测)

测试域名解析生效的方法有以下四类 域名解析生效测试本地域名解析生效测试测试命令dig或nslookup全国各地运营商解析生效测试域名解析生效测试 可帮助用户快速排查域名、DNS、网站问题,点击下方蓝色字体立即测试。 阿里云DNS检测 本地域名解析生效测试 此查询工具可以检测…

为什么需要多线程

对于这个问题可能很多朋友会说是为了高性能&#xff0c;个人觉得这是误解&#xff0c;多线程不等于高性能&#xff0c;从cpu&#xff08;单核&#xff09;的角度上看单线程才能带来最高性能。 对于单纯的运算任务来说一条线程依次执行到底肯定是最快速的&#xff08;因为线程间…

PhpMyAdmin后台getshell

PhpMyAdmin简介 PhpMyAdmin 是一个以PHP为基础&#xff0c;以Web-Base方式架构在网站主机上的MySQL的数据库管理工具&#xff0c;让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径&#xff0c;尤其要处理大量资料的汇入及汇出…

app mvc框架_Google App Engine上的Spring MVC和REST

app mvc框架前段时间&#xff0c;我写了一篇关于如何使用Spring MVC实现Restful Web API的文章 。 阅读我以前的文章以了解它。 在那篇文章中&#xff0c;它开发了一个简单的Rest示例。 为了测试该应用程序&#xff0c;将文件复制到Web服务器&#xff08;例如Tomcat &#xff0…

谷歌浏览器如何将繁体字设置成中文?

今天刚拿到公司发给我的电脑,这个电脑是戴尔的,不知道用了多少年啦,处理器是i3的,CPU8+50O还行,总体感觉一般,不卡顿,办公的地方网速跟蜗牛一样,整个电脑应该是重置过的或者重装了系统,作为开发下载常用的浏览器(谷歌、火狐、IE)、编译器、IM工具等还是很有必要的,…

Python学习笔记 -- 第一章

本笔记参考廖雪峰的Python教程 简介 Python是一种计算机高级程序设计语言. 用Python可以做什么&#xff1f; 可以做日常任务&#xff0c;比如自动备份你的MP3&#xff1b;可以做网站&#xff0c;很多著名的网站包括YouTube就是Python写的&#xff1b;可以做网络游戏的后台等等&…

红队技巧-域渗透的协议利用

1.pth(hash传递) 1.1 PTH简介 哈希传递(pth)攻击是指攻击者可以通过捕获密码的hash值(对应着密码的值),然后简单地将其传递来进行身份验证&#xff0c;以此来横向访问其他网络系统&#xff0c;攻击者无须通过解密hash值来获取明文密码&#xff0c;因为对于每个Session hash值都…

你这么喜欢敲代码,那么技术的乐趣在哪里?

在中国的技术圈子里,流行着这样一种说法:过了三十五岁,就一定得改行。在技术飞速发展的今天,只要稍不留神,就会掉下队来。因此,诸多技术工作者在仔细权衡利弊之后,终于还是决定跳离技术这个是非之地,将工作机会让给那些更青春更朝气的年轻一辈们。 当然,还是有相当一部…

将数据库日志添加到JUnit3

在过去的十年中&#xff0c;我们已经编写了成千上万的JUnit3测试&#xff0c;现在正尝试将结果合并到数据库中&#xff0c;而不是分散的日志文件中。 事实证明&#xff0c;扩展TestCase类非常容易做到这一点。 注意&#xff1a;这种方法并不直接适用于JUnit4或其他测试框架&…

make and make bzImage

2.6内核 make make bzImage make modules 无非是改下Makefile而已 2.4 内核 01.make menuconfig 02.make dep 03.make bzimage 04.make modules 05.make modules_install 06.make install 2.6 内核 01.make menuconfig 02.make 03.make modules_install 04.make install转载于…

谈一谈我对前端的学习路线及方法的一些心得

到现在为止,前端工程师已经成为研发体系中的重要岗位之一。可是,与此相对的是,我发现极少或者几乎没有大学的计算机专业愿意开设前端课程,更没有系统性的教学方案出现。大部分前端工程师的知识,其实都是来自于实践和工作中零散的学习。 首先是前端的基础知识,常常有一些工作多…

Veil生成免杀payload 渗透win10 获取靶机shell

一&#xff1a;实验环境 两台机器处于同网段 攻击机&#xff1a;kali 192.168.115.134 靶机&#xff1a;win10 192.168.115.1 二&#xff1a;Veil下载、安装、使用 kali里默认没有安装Veil&#xff0c;我们通过命令行安装&#xff1a; apt-get update && apt-get inst…