限制BigInteger数字

时间:2016-10-28 19:06:44

标签: java biginteger

我的代码是为了找到13个相邻数字中最大的数字,但由于某种原因,它将BigInteger“产品”限制在6429780.

public class Euler8 {
    public static void main(String[]args) {
        String number=//large 1000 digit number
        BigInteger[] anarray=new BigInteger[13];
        BigInteger product=new BigInteger("1");
        BigInteger maxproduct=new BigInteger("0");
        int y=0;

        for(int i=0;i<number.length();i++){
            anarray[y]=BigInteger.valueOf(Long.valueOf(Character.toString(number.charAt(i))));
            y++;
            if(i>=12){
                for(BigInteger x : anarray) {
                    if(x.compareTo(BigInteger.ZERO)==0||x.compareTo(BigInteger.ZERO)==1) {
                    product = product.multiply(x);
                    }
                }
                if(product.compareTo(maxproduct)==1){
                    maxproduct=product;`

                }
                y=0;
                product=BigInteger.ONE;
            }
        }
        System.out.println(maxproduct);
    }
}

1 个答案:

答案 0 :(得分:0)

在循环的每次迭代后将y重置为0,因此在添加前13个数字后,您只需要替换数组的第一个元素。