质数筛法

news/2024/10/8 20:30:43

1. 埃拉托斯特尼筛法

从小到大枚举每一个数 \(x\),考虑标记每一个合数,如果 \(x\) 没被标记,那么它就是质数,所以 \(x \times i\) 就是合数,将它们标记,由于小于 \(x^2\)\(x\) 的倍数之前已经筛过了,所以从 \(x^2\) 开始。最后没被标记的就是质数,复杂度 \(\mathcal{O}(n \log n \log n)\)

这种筛法可以进行优化,例如枚举到 \(\sqrt{n}\),只筛奇数,bitset 优化等等,甚至可以快过线性筛法。

bitset<N> not_prime;
not_prime[1]=1;
for(int i=2;i*i<=n;i++)
{if(not_prime[i]==0){for(int j=i*i;j<=n;j+=i){not_prime[j]=1;}}
}
For(i,1,n)
{if(!not_prime[i]) prime[++cnt]=i;
}

2. 欧拉筛

埃氏筛法会将一个合数重复多次标记。如果能让每个合数都只被标记一次,那么时间复杂度就可以降到 \(\mathcal{O}(n)\) 了。

考虑让每一个合数只被其最小质因子标记。还是从小到大枚举每一个数 \(i\),标记每一个合数,维护一个质数的序列 \(p\),如果 \(i\) 没被标记,那么将它加入这个序列,接下来遍历这个序列(无论 \(i\) 是不是一个质数),标记 \(i \times p_j\) 为合数,如果 \(i\)\(p_j\) 的倍数,那么就可以直接 \(\texttt{break}\) 了,这是由于:

如果不 \(\texttt{break}\) 的话,那么 \(i \times p_{j+1}\) 就会被 \(p_{j+1}\) 标记,而 \(p_j \mid i\),所以 \(p_j\) 也是 \(i \times p_{j+1}\) 的一个质因数,由于序列 \(p\) 是递增的,所以 \(p_j < p_{j+1}\),所以 \(p_{j+1}\) 不是 \(i \times p_{j+1}\) 的最小质因子,违背了每一个合数只被其最小质因子标记的原则,所以需要 \(\texttt{break}\)

for(int i=1;i<=n;i++)
{if(!notprime[i]){prime[++cnt]=i;}for(int j=1;j<=cnt&&(long long)i*prime[j]<n;j++){notprime[i*prime[j]]=1;if(i%prime[j]==0){break;}}
} 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

CMake 属性之目标属性

CMake 可以通过属性来存储信息。它就像是一个变量,但它被附加到一些其他的实体上,像是一个目录或者是一个目标。例如一个全局的属性可以是一个有用的非缓存的全局变量。 在 CMake 的众多属性中,目标属性 ( Target Properties ) 扮演着尤为重要的角色,它们直接关联到最终生成…

模板测试

模板测试(Stencil Test)是3D渲染中的一种技术,它根据预设条件比较参考值与模板缓冲区的值来决定片段是否进行下一步深度测试。本文介绍了模板测试的条件判断公式、语法,包括命令、比较函数,以及更新操作的各种关键字,如Keep、Zero等。并通过穿透效果的例子展示了模板测试…

CH57X/CH58X/CH59X 加PA应用

一、前言在有些时候产品需要做到更远的距离在原来的基础上加上PA放大芯片来实现广播或者连接距离上的提升。 PA是Power Amplifier的简称,中文名称为功率放大器,简称“功放”,指在给定失真率条件下,能产生最大功率输出以驱动某一负载的放大器。对于射频通信系统,PA负责发射通道…

csp-s 模拟 8

难度 ★★★★☆csp-s模拟8 T1 score and rank 特殊性质,题意转换 妙妙题 对于 \(S\) 小于等于 \(0\) 的情况答案显然是所有大于等于 \(S\) 的个数。 现在讨论 \(S\) 大于 \(0\) 的情况。 先对序列做一个前缀和,题目要求即是让所有值减去前缀最小值小于 \(S\) 考虑有一段连续…

C#联合Visionpro编程学习记录,视觉中需要考虑旋转中心工况的计算方法探讨

一、考虑旋转中心的工况解法, 1,视觉中引导定位或者对位贴合时,机械手或者xyzr轴上手爪中心和末端轴中心不同轴时,就要考虑旋转中心问题; 2,如果设备的CT要求没有很苛刻,可以采用2次拍照的方案解决,1次拍照后纠偏角度,然后在纠正角度后的位置2次拍照纠正x、y偏差;看下…

海外模组联网非常难?不往忘了APN配置…

​除了中国之外,国外的4G信号都比较差劲。 做海外的设备,如果忽视了射频的信号质量,肯定是要吃大亏的! 所以,海外模组的联网问题,会比国内要多不少。 客户在实际应用中或多或少都会遇到:网络相关问题:例如:连不上网,APN不会配置,APN没有配置,当地信号差… 软件升级…

轻松上云怎么操作?IoT_CLOUD之中移OneNET

​最近来了很多新朋友,也经常被问:可以多讲些云平台的操作吗?当然可以!文末留言你想要了解的云平台,优先安排~ 接下来,本文将以Air780E+LuatOS作为示例,教你使用合宙IoT_CLOUD连接中移OneNET物联网云平台。一、IoT_CLOUD简1.1 IoT_CLOUD特色简介 IoT_CLOUD——是合宙专门…