gpt4 book ai didi

arrays - 大小大于 2147483647 的 BooleanArray

转载 作者:行者123 更新时间:2023-12-05 04:36:34 24 4
gpt4 key购买 nike

我正在尝试在 Kotlin 中实现阿特金筛法。我希望它支持最多 2^32-1 的数字,所以筛子必须是 UInt 索引数组。
我尝试像这样初始化筛子:

var sieve = BooleanArray(limit + 1u)

然后,我得到错误:

error: type mismatch: inferred type is UInt but Int was expected

那么,有什么方法可以让 BooleanArray(或等效的)存储至少 4294967295 个值?

最佳答案

最简单的方法可能是使用 UInt 作为大小,然后在内部映射 2 个通用的 BooleanArray,它们使用 Int 进行寻址,尽管永远不可能有负索引值(这似乎是一个设计错误——或者至少是缺乏优化)。这意味着,那个人也可以用带符号的 Int 来解决所有问题。我的意思是,在内部将负值映射到一个 BooleanArray,将正值映射到另一个 BooleanArray。实际问题似乎是,正在传递带符号的 Int,但只能使用正范围 (50%) 来寻址数据。可以使用 absoluteValue ,因为数组的填充方向无关紧要。

关于arrays - 大小大于 2147483647 的 BooleanArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70808542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com