循环 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));
}