由于BitSet.get()
函数使用int
作为参数,我在想是否可以在BitSet
中存储超过2 ^ 32位,如果是这样,我将如何检索它们?
我正在做一个Project Euler问题,我需要生成素数到10 ^ 10。我目前用于生成素数的算法是Erathonesus的Sieve,将布尔值存储为BitSet中的位。对此有何解决方法?
答案 0 :(得分:3)
您可以将位集列表用作List<BitSet>
,当达到一个位集的末尾时,您可以移动到下一个位集。
但是,我认为您的方法可能不正确。即使您为每个数字使用一个位,您也需要10^10
位,大约1 GB
个存储器(一个字节为8位,GB为1024 ^ 3个字节)。大多数项目欧拉问题应该是可以解决的,而不需要那么多的记忆。