如何在Java中计算大数?

时间:2018-11-08 18:24:31

标签: java

ex 我想要从1 ^ 1到n ^ n的总和:1 ^ 1 + 2 ^ 2 + 3 ^ 3 + ............. + n ^ n 而且我知道如何,但是这个问题是我只想要总和的最后十个数字,而我只需要使用原始数据。如何仅使用原始数据来计算大数。

public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    short n = in.nextShort();
    if(n < 0) {
        System.out.println("please give a positive number");
        return;
    }
    long l  = rechnung(n);
    System.out.println(l);
    String str = Objects.toString(l, null);
    String s = ziffer(str);
    System.out.println(s);
}

public static long rechnung(short j) {
    long summe = 0;
    for(int i = 1; i <= j; i++) {
        summe += Math.pow(i,i);
    }
    return summe;
}

public static String ziffer(String s) {
    String str = "";
    int k =s.length() - 10;
    int cond = k + 9;
    if(s.length() <= 10) {
        return s;
    }
    for(int j = k; j <= cond; j++) {
        str = str + s.charAt(j);
    }
    return str;
}

1 个答案:

答案 0 :(得分:1)

由于只需要保留较低的10位数字,可以使用%10_000_000_000L保留每次计算所需的数字。