首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >素数生成的动态筛选算法

素数生成的动态筛选算法
EN

Stack Overflow用户
提问于 2011-09-27 02:02:54
回答 5查看 680关注 0票数 2

我正在实现Eratosthenes的筛子,有关这方面的解释,请参阅http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes。然而,我想调整它来生成M个素数,而不是1到N个素数。我这样做的方法很简单,就是创建一个足够大的N,使得所有M个素数都包含在这个范围内。有谁有好的启发式方法来模拟素数的增长?如果你想发布代码片段,我用Java和C++实现。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-09-27 02:15:45

要生成M个素数,您需要达到约M log M。请参阅this Wikipedia article中关于素数定理的Approximations for the nth prime number。为了安全起见,您可能希望高估--比方说N=M (log + 1)。

编辑补充:正如大卫·哈曼指出的那样,这种高估并不总是足够好的。维基百科的文章给出了M (log + log )作为M >= 6的安全上限。

票数 4
EN

Stack Overflow用户

发布于 2011-09-27 02:51:23

第n个素数的近似值取自wikipedia;因此,您只需要分配一个m*log(m)+m*log(log(m))数组;一个m*log(m)数组是不够的。

票数 3
EN

Stack Overflow用户

发布于 2011-09-27 03:49:09

另一种选择是分段筛子。把数字筛选到一百万。然后是第二个百万。然后是第三个。诸若此类。当你吃够了就停下来。

为下一段重新设置筛子并不难。请参阅我的blog了解详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7559236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档