Java:如何在java中创建64位数组以存储大于Integer_max的值

时间:2016-02-05 20:03:39

标签: java arrays integer long-integer

我试图找到素数之和。为了在较短的时间内执行,我已经在长数组中预先计算了它,但最后两个测试用例出现了错误。原因是溢出,即可以在Integer.MAX_VALUE中容纳的最大值,但我试图提供一个大值。我需要这个大价值:

测试链接:https://www.hackerrank.com/contests/projecteuler/challenges/euler010/

这是我的代码:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
    public static void main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
        Scanner sc = new Scanner(System.in);
        int count,n,t;
        long ans[] = new long[10000001];
            ans[0] = 0; ans[1] = 1; ans[2] = 2; ans[3] = 5; ans[4] = 5;
       //     ans[2] = 5;
        for(int m=5;m<100000;){
            count = 0;
                    if(m%2==0){
                        count++;
                    }
         //       for(int i=3;i<=1000000;i++){

                    for(int j=3;j*j<=m;j+=2){
                        if(m%j==0){
                //            System.out.println(i);
                            count++;
                        }
                    }
                    if(count<1){
                    ans[m]=ans[m-1]+m;
           //          System.out.println(m+" : "+ans[m]);
                        m++;
                    }
                    else{
                       ans[m]=ans[m-1];
             //         System.out.println(m+" : "+ans[m]);
                        m++; 
                    }
        //        }
        } 
                t = sc.nextInt();
                while(t>0){
            n = sc.nextInt();
            System.out.println(ans[n]);
            t--;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

看起来你正试图存储一个非常大的数字。你可以使用Java Biginteger 类:

  

根据Java文档:

     

所有操作都表现得好像BigIntegers用两个补码表示法表示(如Java的原始整数类型)。 BigInteger为所有Java的原始整数运算符以及java.lang.Math中的所有相关方法提供类比。此外,BigInteger还提供 模块算术 GCD计算 ,素性测试, 素数的操作生成 ,位操作和一些其他杂项操作。

当我们进行系统安全时,我们需要生成长度超过100位的大质数。我们使用BigInteger。