首页
学习
活动
专区
圈层
工具
发布

素数筛选中的两种经典方法——埃拉托色尼筛法(埃氏筛)和线性筛法-野牛程序员教少儿编程

素数筛选中的两种经典方法——埃拉托色尼筛法(埃氏筛)和线性筛法-野牛程序员教少儿编程

素数大揭秘:埃氏筛 & 线性筛的魔法课堂

—— 青少年信息学竞赛入门系列 · 第讲

🧠 什么是素数?

在数学的王国里,有一类数特别“孤傲”——它们除了 1 和自己,谁也不认识

比如:

2、3、5、7、11、13……这些都是素数(Prime Number)

而 4=2×2,6=2×3,9=3×3……这些叫合数(Composite Number)

🧩 小测试:

以下哪些是素数?

17,21,23,27,29

答案: 17, 23, 29 是素数; 21, 27 是合数

如何快速找出素数?

从 1 到 10 万中找素数,数一个算一个?太慢!

于是,数学家们发明了两种“批量筛选”的绝招:

第一招:埃拉托色尼筛法

(英文名:Eratosthenes Sieve)

思想:

每当遇到一个素数,就把它的倍数全部划掉,留下的就是素数!

举个例子(1~30):

2 是素数 划掉 4,6,8,...

3 是素数 划掉 6,9,12,...

5 是素数 划掉 10,15,20,...

最后剩下的就是:2, 3, 5, 7, 11, 13, 17, 19, 23, 29

方法一:埃拉托色尼筛法(Eratosthenes)

第二招:线性筛法(欧拉筛)

思想:

每个合数,只被它的最小质因子标记一次,绝不重复!

🧠 什么是“最小质因子”?

比如:

6 = 2×3 最小质因子是 2

15 = 3×5 最小质因子是 3

77 = 7×11 最小质因子是 7

方法二:线性筛法(欧拉筛)

亮点:

不重复标记,效率更高

时间复杂度是 $O(n),适合数据量超大的场景

🧮 对比总结表

野牛程序员教少儿编程与信息学奥赛

宜宾市野牛网络科技有限公司专业微信小程序开发、网站建设、软件开发等

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OvX58M_Lzn20CaNA5F5T9DtQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券