我想在 Kotlin 中实现 Atkin 筛法。我希望它能处理高达 2^32-1 的数字,因此筛子必须是一个以 UInt
为索引的数组。
我尝试像这样初始化筛子:
var sieve = BooleanArray(limit + 1u)
接着,我遇到了错误:
error: type mismatch: inferred type is UInt but Int was expected
那么,有没有办法使一个
BooleanArray
(或等效的)存储至少4294967295个值?
Int
消耗的空间比Boolean
多,而且通过Int
进行寻址才是实际的问题。这应该类似于:BitArrayBin
,它通过Long
进行寻址。在 Kotlin 中进行自定义实现甚至可以通过UInt
或ULong
进行寻址。 - Martin Zeitlersize: Int
,这正是同样的问题,因此不会有任何区别,只会浪费 RAM。 - Martin Zeitler