news 2026/6/5 9:35:00

质数筛-欧拉筛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
质数筛-欧拉筛

对于正常的程序要求,埃氏筛的速度已经是相当不错了,但是在某些极端条件下,埃氏筛的速度可能还不够,这个时候我们就要用到欧拉筛了

思路

埃氏筛存在一个非常严重的缺陷,那就是它会对一个数据进行反复筛选,比如:

6 = 2 * 3

6 = 3 * 2

可以发现,对于 6 这个非质数,我们进行了两次筛选,而对于后面跟大的数来说,可能被筛的次数会更多,这个时候就会对我们筛法的效率产生影响。而欧拉筛法可以避免无效的筛选。

我们发现,对于每个非质数,都会存在唯一的最小质因子

于是我们便可以让每个和数只在它最小质因子与对应因数相乘时才被标记为合数,这样我们就只筛了一次。例如:

6 = 2 * 3 //标记 6

6 = 3 * 2 //已经标记过,便不再标记

核心思想:从第一个质数开始,一个个排除,不做无效的筛选。

人话:从前向后走,边走边乘,乘出来的数就是合数

代码实现

#include<iostream> #include<cstring> using namespace std; const int N = 1e5; int primes[N]; //存储质数 int flag[N]; //标记是质数还是合数,如果是质数为 0 ,开始假设全是质数 int main(){ int n; cin >> n; int pos = 0; for(int i = 2 ; i <= n ; i++){ if(flag[i] == 0){ //如果是质数 primes[pos++] = i; //存储质数 for(int j = 0 ; j < pos && i * primes[j] <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 } }else{ //如果是合数 for(int j = 0 ; j < pos && primes[j] * i <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 if(i % primes[j] == 0) break; //如果可以整除说明发现了最小质因子,退出循环 } } } for(int i = 0 ; i < pos ; i++){ cout << primes[i] << ' '; } cout << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/3 12:33:11

Linly-Talker能否用于高校英语口语陪练机器人?

Linly-Talker能否用于高校英语口语陪练机器人&#xff1f; 在高校英语课堂上&#xff0c;一个常见现象是&#xff1a;学生听写尚可&#xff0c;提笔能写&#xff0c;但一张口就“卡壳”。教师资源有限&#xff0c;难以给每个学生提供充分的口语练习机会&#xff1b;而学生又因害…

作者头像 李华
网站建设 2026/6/2 21:02:52

Linly-Talker能否生成科学家形象讲述前沿科技?

Linly-Talker能否生成科学家形象讲述前沿科技&#xff1f; 在人工智能加速重构人机交互形态的今天&#xff0c;一个曾经只存在于科幻电影中的场景正悄然走进现实&#xff1a;一位神情睿智的“爱因斯坦”站在讲台前&#xff0c;用他标志性的德语口音缓缓解释着相对论&#xff1b…

作者头像 李华
网站建设 2026/6/4 23:15:36

Linly-Talker镜像提供详细中文文档和示例代码

Linly-Talker&#xff1a;一键部署的中文数字人系统如何重塑人机交互 你有没有想过&#xff0c;只需要一张照片和一段文字&#xff0c;就能让一个虚拟人物“活”起来&#xff0c;开口为你讲解课程、播报新闻&#xff0c;甚至进行实时对话&#xff1f;这听起来像是科幻电影中的场…

作者头像 李华
网站建设 2026/6/3 13:42:27

13、Windows Socket编程:从基础到应用的深度解析

Windows Socket编程:从基础到应用的深度解析 1. 客户端连接检查与非阻塞编程 在网络编程中,确保与客户端的连接稳定至关重要。可以通过 CheckConnection 函数来检查与客户端的连接状态。以下是该函数的示例代码: void CheckConnection (HWND hWnd, SOCKET soc, SOCKET…

作者头像 李华
网站建设 2026/6/2 22:25:44

Linly-Talker在智慧农业大棚中的语音指导应用

Linly-Talker在智慧农业大棚中的语音指导应用 在广袤的农田与现代化温室之间&#xff0c;一场静默却深刻的变革正在发生。当一位年过半百的菜农站在黄瓜架前&#xff0c;用带着浓重方言的声音问“这叶子白了一片是不是要打药&#xff1f;”时&#xff0c;回应他的不再是翻书查资…

作者头像 李华
网站建设 2026/6/3 14:45:45

Linly-Talker支持语音唤醒功能吗?类似Siri体验

Linly-Talker 能否实现“说一句就醒”的语音唤醒体验&#xff1f; 在智能音箱普及的今天&#xff0c;我们早已习惯了对设备喊一声“嘿 Siri”或“小爱同学”&#xff0c;就能立刻唤醒一个随时待命的数字助手。这种“始终在线、听觉优先”的交互方式&#xff0c;正悄然成为人机沟…

作者头像 李华