如何计算的厄拉多塞筛法的时间复杂度?

发布于 2022-09-01 05:15:03 字数 211 浏览 12 评论 0

这是书中的原文:

厄拉多塞筛法是一种用于计算小于N的所有素数的方法. 我们从制作整数2到N的表开始. 找出最小的未被删除的整数i,然后删除i,2i,3i.... 当i>√N时, 算法终止

答案是NloglogN, 却没有说具体是怎么算的.

上网找了好久, 都是只有结论, 没有讲如何算出来的.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

鸵鸟症 2022-09-08 05:15:03

O(NloglogN)数的是算术运算的次数。当N很大时,每个算术运算不一定在常数个指令周期内完成。不妨假设算术运算的时间复杂度是O(logN),也就是存储N所需要的空间。

此时厄拉多塞筛法的时间复杂度是O(NloglogN) * O(logN) = O(NlogNloglogN)

而这个loglogN又是怎么来的呢?厄拉多塞筛法找到k的时候需要标记O(N/k)个数为合数。因此一共需要标记N*素数倒数之和 次,其中p <= N表示所有小于等于N的素数。这就是N乘以小于等于N的素数的倒数之和。右手边是O(N)*O(loglogN) = O(NloglogN)的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文