分割如何提高埃拉托斯特尼筛法的运行时间?

2024-05-03

我遇到了埃拉托色尼筛的分段实现,它的运行速度比传统版本快很多倍。 有人可以解释一下分段如何提高运行时间吗? 请注意,我想在其中找到素数[1,b].

它适用于这个想法:(用于查找 10^9 之前的质数)

  • 我们首先生成 sqrt(10^9) 以下的筛选素数,这是交叉倍数所需的。然后我们开始交叉第一个素数2的倍数,直到达到2>=segment_size的倍数,如果发生这种情况,我们使用(multiple-segment_size)计算下一个段中该倍数的索引并将其存储在单独的数组(下一个[])。然后,我们使用相同的过程交叉掉下一个筛选素数的倍数。一旦我们划掉了第一段中所有筛选素数的倍数,我们就迭代筛选数组并打印出(或计算)素数。

  • 为了筛选下一个段,我们重置筛选数组,并将较低的偏移量增加segment_size。然后我们再次开始交叉倍数,对于每个筛分素数,我们从下一个数组中检索筛子索引,然后从那里开始交叉倍数......


分段筛执行与常规筛相同的所有操作,因此 big-O 时间复杂度保持不变。区别在于内存的使用。如果筛子足够小以适合内存,则没有区别。随着筛子尺寸的增加,参考局部性成为一个因素,因此筛分过程减慢。在极端情况下,如果筛子不适合内存并且必须分页到磁盘,则筛分过程将变得非常慢。分段筛子保持内存大小恒定,并且可能很小,因此筛子的所有访问都是本地的,因此速度很快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分割如何提高埃拉托斯特尼筛法的运行时间? 的相关文章

  • 身份未映射异常

    System Security Principal IdentityNotMappedException 无法转换部分或全部身份引用 该错误仅在应用程序注册后出现一次 当 SecurityIdentifier 无法映射时 例如 返回 Ide
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 阅读 Stack Overflow RSS 源

    我正在尝试获取未回答问题的列表the feed https stackoverflow com feeds 但我在阅读时遇到困难 const string RECENT QUESTIONS https stackoverflow com f
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • Qt中正确的线程方式

    我的图像加载非常耗时 图像很大 并且在加载时也完成了一些操作 我不想阻止应用程序 GUI 我的想法是在另一个线程中加载图像 发出图像已加载的信号 然后用该图像重绘视图 我的做法 void Window loadImage ImageLoad
  • 用于计算有向图上非循环路径数量的快速算法

    简而言之 我需要一个fast计算简单有向图中有多少条非循环路径的算法 By simple我的意思是没有自环或多重边的图 Apath可以从任何节点开始 并且必须在没有传出边的节点上结束 一条路径是acyclic如果没有边出现两次 我的图 经验
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 布隆过滤器的使用

    我正在努力理解布隆过滤器的用处 我了解了它的底层逻辑 空间压缩 快速查找 误报等 我只是不能将这个概念应用到现实生活中 因为它是有益的 一种常见的应用是在 Web 缓存中使用布隆过滤器 我们使用布隆过滤器来确定给定的 URL 是否在缓存中
  • 为什么以下代码不允许我使用 fgets 获取用户输入但可以使用 scanf?

    这是一个更大程序的简短摘录 但该程序的其余部分无关紧要 因为我认为我能够隔离该问题 我怀疑这与我使用 fgets 的方式有关 我读过 最好使用 fgets 而不是 scanf 但我似乎无法让它在这里正常工作 当我使用以下代码时 程序不会给我
  • 标准 C 中的 sizeof 与 sizeof()? [复制]

    这个问题在这里已经有答案了 我看到一些直接使用 sizeof 的代码 想知道它是否是标准 C 令我惊讶的是 它运行得很好 这是一个例子 include
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • OpenMP C 程序运行速度比顺序代码慢

    我是 OpenMP 的新手 正在尝试并行化 Jarvis 的算法 然而事实证明 与顺序代码相比 并行程序花费的时间要长 2 3 倍 难道问题本身就不能并行化吗 或者我并行化它的方式有问题 这是我针对该问题的 openMP 程序 其中有 2
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 为什么我不能在扩展 List 的类中调用 OrderBy?

    我有一堂课 Deck 其中包含一个名为的方法Shuffle 我正在致力于重构Deck延长List
  • 改进C++逐行读取文件的能力?

    我正在解析大约 500GB 的日志文件 我的 C 版本需要 3 5 分钟 我的 Go 版本需要 1 2 分钟 我正在使用 C 的流来流式传输文件的每一行以进行解析 include
  • 在 MVVM 中,可以在视图后面的代码中访问 ViewModel 吗?

    在 MVVM 模式中 是否可以接受甚至可以访问视图代码后面的 ViewModel 属性 我有一个可观察的集合 它填充在 ViewModel 中 我需要在视图中使用它来绑定到带有链接列表的无限滚动条 IE private LinkedList
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur

随机推荐

  • Requests/aiohttp:关闭响应对象

    我对是否需要感到有点困惑 close 两者中的响应对象requests and aiohttp 请注意 这是一个单独的实例方法 而不是session close 我说的是响应对象本身 Does Response requests or Cl
  • MySQL 相当于 ORACLES 的rank()

    Oracle 有 2 个函数 rank 和dense rank 我发现它们对于某些应用程序非常有用 我现在正在 mysql 中做一些事情 想知道他们是否有与这些相同的东西 没有什么直接等效的 但你可以用一些 不是非常有效的 自连接来伪造它
  • 模板基类 typedef 和函数有更好的 C++ 语法吗?

    我的代码可以在 VC9 Microsoft Visual C 2008 SP1 中正常编译 但不能在 GCC 4 2 中编译 在 Mac 上 如果这很重要的话 如果我堆积足够的限定符和关键字 我可以强制它在 GCC 中工作 但这似乎不对 这
  • 返回 Tkinter Treeview iid

    我有一个树视图 并在其中插入了一些数据 如下所示 self tree insert end iid test1 text test a values data1 data2 这将在树视图的末尾添加一个条目 其中包含文本 test a 以及列
  • 如何在kafka消费组中动态添加消费者

    我应该如何知道何时必须扩展消费者组中的消费者 当存在快速生产者时 消费者扩大规模的触发因素是什么 一种直接的方法是获取消费者延迟 这可以计算为提交的偏移量和开始偏移量之间的差值 如果最后 n 次计算的延迟正在增加 您可以扩大规模 反之亦然
  • 在 Objective-C 中选择性加载类

    我有模块 但没有来自两个不同的人的源代码 它们都包含相同的类 有没有办法有选择地从模块中加载类 以便重复的类不会发生冲突 是的 我知道这个替代解决方案建议加载和卸载 并且宁愿通过有选择地加载类并完成它来完成 解决 Objective C 命
  • C# 如何使用反射调用字段初始值设定项?

    假设我有这个 C 课程 public class MyClass int a int b new int 6 现在假设我使用反射发现了这个类 并且在查看字段时我发现其中一个是数组类型 即 b foreach FieldInfo fieldi
  • Spark JDBC 仅返回带有列名的数据帧

    我正在尝试使用 Spark JDBC 连接到 HiveTable 代码如下 val df spark read format jdbc option driver org apache hive jdbc HiveDriver option
  • Grafana/prometheus 中没有 kafka 指标

    我成功部署了 Helm Chart普罗米修斯操作员 https github com coreos prometheus operator tree master helm prometheus operator kube 普罗米修斯 ht
  • 在 Beyond Compare 中比较 Json 文件

    如何在 Beyond Compare 中比较两个缩小的 json 文件 是否有内置的 json 文件格式 我正在寻找比较底层 json 对象的两个漂亮的打印表示 In 这个线程 https www scootersoftware com v
  • 使用 pandas 进行操作SettingWithCopyWarning

    我试着delete某些列并转换列中的某些值 df2 drop df2 columns 0 1 3 axis 1 inplace True df2 date df2 date map lambda x str x 1 df2 date df2
  • Git:设置仅获取远程?

    当我跑步时git remote v在我配置了远程的 Git 存储库之一中 我看到每个远程都具有获取和推送规范 git remote v
  • 将 lambda 函数应用于 pandas 滚动窗口系列

    我有一个函数 它接受一个数组和一个值 并返回一个值 我想将其应用到我的系列中s在滚动的基础上 所以数组始终是滚动 窗口 这是我尝试过 不成功 的一个最小示例 使用np random choice代替我真正的功能 我找到了很多查找滚动均值和其
  • 从 bazaar 转换为 git 并同步它们的正确方法

    我在 bazaar 中有一个开发存储库 我想将其转换为 git 并保持同步 我需要这个 因为我将与不了解 bazaar 的人分享我的代码 首先我需要将我的 bazaar 存储库转换为 git 我用谷歌搜索了一下 发现this http as
  • jersey.api.client.WebResource - 如何调试/记录请求标头

    我正在使用 jersey 生成 http 请求 我希望能够看到request在发送之前 用于调试目的 例如 WebResource resource client resource url resource header aa bb res
  • 如何使用MonkeyDevice.instrument?

    嗨 大家好 我正在尝试从 MonkeyRunner 脚本运行我的测试仪器之一 不幸的是我无法让它工作 我尝试使用不同的参数变量调用 MonkeyDevice instrument 但没有成功 我试过了 设备 MonkeyRunner wai
  • 与 EOF 比较时使用 int 作为字符类型

    引自 Kernighan 和 Ritchie 的 C 编程语言 第 16 页 include
  • 使用 Selenium 自动化结帐流程时出现 403

    我正在尝试使用 python 和 selenium 创建一个脚本来自动执行 bestbuy ca 的结帐过程 我一直到达最后阶段 您可以单击以查看最终订单 但当我尝试单击到最后一步时 收到以下 403 禁止消息 如网络响应中所示 是否有服务
  • 当目录中同时添加很多文件时FileSystemWatcher无法正常工作

    当许多文件同时添加到目录中时 FileSystemWatcher 无法正常工作 观察者根本找不到目录中的所有文件 仅当文件被一一放置在文件夹中时 如果大量文件同时复制到文件夹中则不会 线程的创建是问题的解决方案还是有其他方法来处理问题 Th
  • 分割如何提高埃拉托斯特尼筛法的运行时间?

    我遇到了埃拉托色尼筛的分段实现 它的运行速度比传统版本快很多倍 有人可以解释一下分段如何提高运行时间吗 请注意 我想在其中找到素数 1 b 它适用于这个想法 用于查找 10 9 之前的质数 我们首先生成 sqrt 10 9 以下的筛选素数