循环通过BigInteger的有效方法

时间:2017-11-20 02:25:54

标签: java 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对象而不是仅使用++增加值,因此占用内存太贵了。

有没有办法增加值而不是每次都创建新对象?

1 个答案:

答案 0 :(得分:1)

好吧,您可以使用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));
}