我的代码是为了找到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);
}
}
答案 0 :(得分:0)
在循环的每次迭代后将y重置为0,因此在添加前13个数字后,您只需要替换数组的第一个元素。