对于图书馆,我需要将第一个素数存储到限制 L。这个集合必须有 O(1) 查找时间(检查一个数字是否是素数)并且它必须很容易,给定一个数字,找到下一个素数(假设它小于 L)。
鉴于 L 是固定的,生成列表的 Eratostene 筛子就可以了。现在,我使用压缩布尔数组来存储列表,其中仅包含 3 到 L(含)之间奇数的条目。这需要 (L-2)/2 位内存。我希望能够在不使用更多内存的情况下静态增加 L。
是否存在使用较少内存且具有相似属性的数据结构?或者至少有恒定的查找时间?(然后可以枚举奇数,直到我们得到一个素数)
(我写这个的语言是Factor,但这个问题在任何具有内置或易于编程的打包位数组的语言中都是相同的)