如何在java中计算大数?

如何在java中计算大数?,java,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("pleas

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;
}
publicstaticvoidmain(字符串参数[]){
扫描仪输入=新扫描仪(系统输入);
short n=in.nextShort();
if(n<0){
System.out.println(“请给出一个正数”);
返回;
}
长l=循环(n);
系统输出打印LN(l);
String str=Objects.toString(l,null);
字符串s=ziffer(str);
系统输出打印项次;
}
公共静态长循环(短j){
长总和=0;

对于(int i=1;i由于您只需要保留较低的10位数字,您可以使用%10_000_000_000L来保留每次计算所需的数字。

这听起来像一个。您试图实现什么?@NicholasK我只需要使用原始数据类型为什么您只需要使用原始数据类型?如果因为这是一个学校项目,我会我猜你的目标是实现你自己的有限形式的
BigInteger
。问题什么时候出现?使用long类型,你可以处理一个很大的部分否?你也可以在每次计算pow时计算10个长度,每次只需将10个数字相加,其中n^n=16^16长数据类型会在流中运行。当我求和时。