当前位置: 首页 > wzjs >正文

互联科技 行业网站建设银行如何网站设置密码

互联科技 行业网站,建设银行如何网站设置密码,网络设计师好找工作吗,贵阳建设厅网站文章目录 一、什么是埃式筛?二、埃式筛的原理:层层筛选,留下质数三、代码实现:将数学思想转化为编程语言四、性能分析:埃式筛的优势与局限五、埃式筛的应用场景 在算法的浩瀚星空中,质数筛选算法如同璀璨的…

文章目录

  • 一、什么是埃式筛?
  • 二、埃式筛的原理:层层筛选,留下质数
  • 三、代码实现:将数学思想转化为编程语言
  • 四、性能分析:埃式筛的优势与局限
  • 五、埃式筛的应用场景

在算法的浩瀚星空中,质数筛选算法如同璀璨的星辰,而埃拉托色尼筛法(Sieve of Eratosthenes,简称埃式筛)则是其中最为耀眼的一颗。它以简洁优雅的思想和高效的实现,成为计算机科学与数学领域筛选质数的经典算法。无论是编程新手,还是经验丰富的开发者,都能从埃式筛中领略到算法与数学结合的精妙之处。接下来,我们就一同走进埃式筛的世界。

一、什么是埃式筛?

埃式筛是古希腊数学家埃拉托色尼在公元前三世纪提出的一种快速找出一定范围内所有质数的算法。质数,又称素数,是指在大于 1 的自然数中,除了 1 和它自身外,不能被其他自然数整除的数。例如 2、3、5、7、11 等都是质数,而 4(能被 2 整除)、6(能被 2 和 3 整除)等则不是。埃式筛的核心目标,就是通过一套巧妙的筛选机制,高效地找出给定区间内的所有质数。

二、埃式筛的原理:层层筛选,留下质数

埃式筛的原理基于一个简单而深刻的数学事实:任何一个合数(非质数)都可以表示为若干个质数的乘积。算法从最小的质数 2 开始,将 2 的所有倍数(除了 2 本身)标记为非质数;接着找到下一个未被标记的数 3,将 3 的所有倍数(除了 3 本身)标记为非质数;以此类推,直到遍历完所有小于等于目标范围平方根的数。那些最终未被标记的数,就是我们要找的质数。

举个例子,假设我们要找出 1 到 100 之间的所有质数。首先,我们将 2 的倍数 4、6、8、10…98、100 标记为非质数;然后处理 3,将 3 的倍数 6(已标记)、9、12、15…96、99 标记为非质数;接着是 5,将 5 的倍数 10(已标记)、15(已标记)、20、25…95、100 标记为非质数;再处理 7,将 7 的倍数 14、21、28…91、98 标记为非质数。经过这样一轮筛选,1 到 100 之间未被标记的数 2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97 就是我们要找的质数。

为什么只需要遍历到目标范围的平方根呢?这是因为如果一个数 n 是合数,那么它一定有一个小于等于 n \sqrt{n} n 的质因数。例如,对于 36,它的平方根约为 6,而它的质因数 2、3 都小于等于 6。所以,只要我们遍历到 n \sqrt{n} n ,就可以把 n 以内的所有合数都标记出来,从而找出所有质数。

三、代码实现:将数学思想转化为编程语言

下面,我们用 C++ 语言来实现埃式筛算法:

#include <iostream>
#include <vector>
#include <cmath>
using namespace std;vector<int> sieveOfEratosthenes(int n) {// 边界条件处理:如果 n 小于 2,直接返回空数组if (n < 2) return {};// 创建一个布尔数组,初始假设所有数都是质数vector<bool> isPrime(n + 1, true);isPrime[0] = isPrime[1] = false; // 0 和 1 不是质数// 只需要检查到 sqrt(n)即可int sqrtN = sqrt(n);for (int i = 2; i <= sqrtN; ++i) {if (isPrime[i]) {// 将 i 的所有倍数标记为非质数// 从 i*i 开始,因为小于 i*i 的 i 的倍数已经被标记过了for (int j = i * i; j <= n; j += i) {isPrime[j] = false;}}}// 收集所有质数vector<int> primes;for (int i = 2; i <= n; ++i) {if (isPrime[i]) {primes.push_back(i);}}return primes;
}int main() {int n = 100;vector<int> primes = sieveOfEratosthenes(n);cout << "小于等于" << n << "的质数有:" << endl;for (int prime : primes) {cout << prime << " ";}cout << endl;return 0;
}

在上述代码中,我们首先创建一个布尔类型的vector容器isPrime ,用于标记每个数是否为质数,初始时假设所有数都是质数(标记为true)。然后通过两层循环,外层循环从 2 遍历到目标范围的平方根,内层循环用于标记当前质数的所有倍数为非质数。最后,遍历数组,将未被标记为非质数的数收集起来,即为我们要找的质数。

四、性能分析:埃式筛的优势与局限

埃式筛的时间复杂度为 O(n log log n) ,相比于暴力枚举法(时间复杂度为 O(n n \sqrt{n} n ),埃式筛在处理较大范围的质数筛选时效率有了显著提升。这是因为埃式筛通过一次遍历,同时标记多个合数,减少了不必要的判断。

然而,埃式筛也并非完美无缺。它的空间复杂度为 O(n) ,需要额外的数组来存储每个数是否为质数的标记信息。当处理极大范围内的质数筛选时,可能会面临内存不足的问题。此外,在某些特定场景下,如只需要判断一个数是否为质数,而不是筛选一定范围内的所有质数,埃式筛可能就不如其他专门的质数判定算法(如米勒 - 拉宾测试)高效。

五、埃式筛的应用场景

埃式筛在实际应用中有着广泛的用途:

  1. 密码学领域:在生成大质数时,埃式筛可以作为初步筛选的工具,快速找出一定范围内的质数,为后续更复杂的质数生成算法提供基础。
  2. 数学研究:在数论研究中,需要大量质数数据进行验证和分析,埃式筛能够高效地提供这些数据。
  3. 算法竞赛:在各类编程竞赛中,质数筛选问题是常见的考点,埃式筛作为经典算法,是参赛者必须掌握的技能之一。

埃拉托色尼筛法以其简洁优美的设计和高效的性能,成为了算法领域的经典之作。从数学原理到代码实现,从性能分析到实际应用,埃式筛都展现出了独特的魅力。希望本文能帮助你深入理解埃式筛,并在未来的学习和实践中灵活运用它。


文章转载自:

http://sQyaqoVf.ypdwc.cn
http://N19Dkae0.ypdwc.cn
http://Q5ywXLkV.ypdwc.cn
http://GUI1TAIS.ypdwc.cn
http://7pK7hELC.ypdwc.cn
http://v1yjRHvP.ypdwc.cn
http://gkIVlgxB.ypdwc.cn
http://K9qlmCMz.ypdwc.cn
http://vI4vQcOO.ypdwc.cn
http://jnOXcQIe.ypdwc.cn
http://ac4AvKHr.ypdwc.cn
http://wEcbjSpe.ypdwc.cn
http://zGtFLHTY.ypdwc.cn
http://Bm5RSgvI.ypdwc.cn
http://jO9fRMmo.ypdwc.cn
http://iA5YllAS.ypdwc.cn
http://1XcfTWFz.ypdwc.cn
http://oTwwPQm7.ypdwc.cn
http://djKRMPXL.ypdwc.cn
http://HLGxLyGk.ypdwc.cn
http://stuCiL5Z.ypdwc.cn
http://9kirtuko.ypdwc.cn
http://JOnVCpC6.ypdwc.cn
http://m0mlzOZ7.ypdwc.cn
http://lTAnogYU.ypdwc.cn
http://3DFHJYr4.ypdwc.cn
http://Qq9n6DzG.ypdwc.cn
http://aEElITBM.ypdwc.cn
http://UZvNACiz.ypdwc.cn
http://mCfA9q47.ypdwc.cn
http://www.dtcms.com/wzjs/609065.html

相关文章:

  • 杭州网站建设faxide英语ppt模板免费下载 素材
  • 网站建设与制作教案wordpress ftp附件
  • 安康市城市建设局网站国外做电商平台的网站有什么
  • 网站如何排名学生兼职网站开发
  • 网站开发个人博客python网页版运行器
  • 手机网站的制作只做网站不推广能行吗
  • 狠狠做网站广告设计与制作是干什么的
  • 门户网站运营短视频分享网站开发
  • 网站logo怎么做动态图网站模板制作教程
  • 表格布局的网站百度入驻
  • 沧州地区阿里巴巴做网站微网站如何做
  • 上海做网站制作wordpress 多站点迁移
  • 亚马逊商标备案是否必须做网站桂林市网站建设公司
  • 公司怎样建自己网站云服务器可以做网站
  • 平面设计好的网站西城专业网站建设公司
  • 给实体店老板做的网站长治网站制作公司
  • 做网站网站会被判多久网站改版的宣传词
  • 传媒免费网站建设交易网站开发合同
  • 关于网站建设方案做实体店打折信息网站
  • 个人备案网站盈利如何解决旅游网站建设问题
  • 卖文具的网站建设台州市城乡建设局网站
  • 横沥做网站的电话wordpress添加下载页
  • 中山高端网站建设价格全国分站seo
  • 自己站网站前端做网站直播
  • 农副产品销售网站开发wordpress更改
  • seo网站快排杭州设计网站最好的公司
  • 温州如何进行网站推广泰兴网站制作
  • 博山网站建设yx718wordpress手册下载
  • 上海近期新闻事件长春网络推广优化
  • 安徽省住房和城乡建设厅官网网站用手机制作表格的软件