循环 BigInteger 的有效方法
Effective way to loop through BigInteger
我正在循环 BigInteger
像这样:
BigInteger i = new BigInteger(Long.MAX_VALUE + "");
BigInteger end = i.add(new BigInteger("10"));
// Display results
for (i = new BigInteger(Long.MAX_VALUE + "");
i.compareTo(end) <= 0;
i = i.add(new BigInteger("1"))) {
System.out.println(i.multiply(i));
}
由于内存使用,这太昂贵了,因为每个循环都会创建新的 BigInteger
对象,而不是仅仅使用 ++
.
来增加值
有没有办法增加值而不是每次都创建新对象?
嗯,您可以使用 BigInteger.valueOf(long)
来避免解析 String
。您可以使用 BigInteger.ONE
而不是每次迭代都重新创建 1
。喜欢,
BigInteger end = BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.valueOf(10));
// Display results
for (BigInteger i = BigInteger.valueOf(Long.MAX_VALUE); i.compareTo(end) <= 0;
i = i.add(BigInteger.ONE)) {
System.out.println(i.multiply(i));
}
我正在循环 BigInteger
像这样:
BigInteger i = new BigInteger(Long.MAX_VALUE + "");
BigInteger end = i.add(new BigInteger("10"));
// Display results
for (i = new BigInteger(Long.MAX_VALUE + "");
i.compareTo(end) <= 0;
i = i.add(new BigInteger("1"))) {
System.out.println(i.multiply(i));
}
由于内存使用,这太昂贵了,因为每个循环都会创建新的 BigInteger
对象,而不是仅仅使用 ++
.
有没有办法增加值而不是每次都创建新对象?
嗯,您可以使用 BigInteger.valueOf(long)
来避免解析 String
。您可以使用 BigInteger.ONE
而不是每次迭代都重新创建 1
。喜欢,
BigInteger end = BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.valueOf(10));
// Display results
for (BigInteger i = BigInteger.valueOf(Long.MAX_VALUE); i.compareTo(end) <= 0;
i = i.add(BigInteger.ONE)) {
System.out.println(i.multiply(i));
}