我目前正在研究Project的Euler Problem 3,由于缺乏编程技巧,我一直都在失败。 这个问题的意思是,这个数字对于int来说太大了。 因此我用了双倍。可悲的是,我的整个代码都基于整个部门。
`
public static ArrayList PrimeDeco(double Insert, int Position, ArrayList PrimeFactor){
ArrayList<Integer> Prime= new ArrayList<Integer>();
Prime=Primenumbers(1000);
int i = Position;
while(Insert%(Integer)Prime.get(i)==0){
Insert=Insert/Prime.get(i);
}
PrimeFactor.add((Integer)Prime.get(Position));
System.out.println(PrimeFactor);
if(Insert!=1){
System.out.println(Insert + " " + Position);
PrimeDeco(Insert,Position+1, PrimeFactor);
}
return PrimeFactor;
}
Insert的类型为double,Prime.get(i)为Primenumber。 在使用Integer 70时,我的程序打印[2,5,7] 70,35,7,11部门。但很明显,这不适用于双重类型数字,我不知道如何在没有逗号的情况下获得整数。
答案 0 :(得分:2)
使用long
代替int
或double
。 long
是一种数据类型,可以存储最多2 ^ 64(2 ^ 63-1)的整数值。
您还可以使用BigInteger
这是一个可以存储任意大小整数的对象。