打印BigInteger的最后十位数

时间:2017-03-05 09:28:55

标签: biginteger

我有一些基本代码可以解决项目Euler上的问题,确切地说是48号。虽然它在技术上产生了答案,我希望我的程序能够整齐地呈现答案,因此我想将最后的TEN数字打印到控制台并省略其他所有内容。

我已经看到一些帖子暗示人们在原始数据类型上使用模运算符,虽然我不知道为什么返回余数可以作为解决方案我无论如何都尝试过,但无济于事。

System.out.println(GrandTotal.mod(BigInteger.TEN));

Gets last digit of a number

import java.math.BigInteger;

public class eulerNo48 {

    public static void main(String[] args)
    {

        /**
         * Loop that calculates the each number from 1 to 1000 to the 
         * power of itself and sums the results.
         */

        BigInteger sum = BigInteger.ZERO;  
        BigInteger tempVar = BigInteger.ONE;
        BigInteger GrandTotal = BigInteger.ZERO;

        for (int i = 1; i <= 1000; i++) {
            sum = tempVar.pow(i); // Calculates the value of tempVar(1 - 1000) to its respective power (i).
            tempVar = tempVar.add(BigInteger.ONE); // Increments temVar for each iteration of the loop.
            GrandTotal = GrandTotal.add(sum); // Adds sum to the grand total.
        }


        System.out.println(GrandTotal);


    }

}

感谢任何和所有帮助。

1 个答案:

答案 0 :(得分:0)

转换为字符串并与之一起工作可能会有所帮助 -

String digits = bigInteger.toString(); // replace bigInteger with GrandTotal in your case
int numberLength = digits.length();
for(int i = numberLength ; i > numberLength - 10; i--) {
    int digit = digits.charAt(i-1) - '0';
    System.out.print(digit);
}