![](/img/trans.png)
[英]how to get the size of disabled attribute in table with xpath in selenium-java
[英]How to get table size 2^32 in java
我必须进入java protected final static int [] SIEVE = new int [ 1 << 32 ];
但是我不能强迫Java这么做。
我得到的最大筛子是2 ^ 26我需要2 ^ 32才能结束作业。 我尝试使用遮罩,但是我需要SIEVE [n] = k,其中min {k:k | n&k> 2}。
编辑我需要使用Sieve查找2到2 ^ 63-1的因数,并且sieve必须具有P [n] =是除以n的最小素数的信息。 我知道用筛子可以将因子分解为2 ^ 52。 但是,如何坚持内容呢?
编辑x2问题已解决
你不能 一个Java阵列可以具有至多 2^31 - 1
元件,因为size
的阵列具有适合在一个符号的32位整数。
无论您是在32位还是64位JVM上运行,这都适用。
我怀疑您的作业中缺少一些东西。 是否要求能够找到所有小于2^32
素数? 如果是这种情况,他们希望您将int[]
每个int
视为32位数组。 如果我的算术是正确的,则只需要一个2^25
int的数组即可。
BitSet
是另一个不错的选择。
LinkedList<Integer>
是一个较差的选择。 它使用的内存大约是相同大小的数组的8倍,并且对于长列表来说, get(int)
的性能将非常慢……假设您以明显的方式使用它。
如果您想要某种可以有效使用尽可能多的内存(可以配置JVM来使用)的内存,则应使用int[][]
即整数数组的数组,并且int[]
实例应尽可能大使他们。
我需要使用Sieve查找从2到2 ^ 63-1的因数,并且sieve必须具有P [n] =是除以n的最小素数的信息。 我知道用筛子可以将因子分解为2 ^ 52。 但是,如何坚持内容呢?
我不确定我是否了解您。 要分解2 ^ 64范围内的数字,您只需要质数最大为2 ^ 32 ...而不是2 ^ 52。 (2 ^ 64的平方根为2 ^ 32,并且非素数必须具有小于或等于其平方根的素数。)
听起来您正在尝试筛除所需的更多数字。
如果确实需要在内存中存储那么多数据,请尝试使用java.util.LinkedList集合。
但是,如果您需要在内存中存储16GB数据,则算法中存在一个基本缺陷。 如果您正在谈论Eratosthenes的筛网,并且您需要将所有<2 ^ 32的素数存储在一个数组中,那么您仍然不需要大小为2 ^ 32的数组。 我建议您使用java.util.BitSet
查找素数,然后根据需要迭代并打印或将其存储在LinkedList中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.