一尘不染

给定素数N,计算下一个素数?

algorithm

一位同事刚刚告诉我,由于与哈希有关的不可思议的原因,C#词典集合将按质数调整大小。我的直接问题是:“它怎么知道下一个素数?它们是在大型表中还是在运行中进行计算?这是在插入时导致确定大小的可怕的不确定性运行时”

所以我的问题是,给定N(即质数),计算下一个质数的最有效方法是什么?


阅读 440

收藏
2020-07-28

共1个答案

一尘不染

已知连续质数之间间隙非常小,对于质数370261,第一个超过100的间隙发生。这意味着即使简单的蛮力在大多数情况下也足够快,取O(ln(p)*
sqrt(p))。

对于p =
10,000,这是O(921)运算。请记住,我们将在每个O(ln(p))插入后执行一次(粗略地说),这完全在大多数问题的限制内,在大多数现代硬件上,这些问题的发生时间约为毫秒。

2020-07-28