我目前正在研究項目的歐拉問題3,由於缺乏編程技巧,我一直在失敗。 關於這個問題的意思是,這個數字對於int來說太大了。 因此我使用了雙。可悲的是,我的整個代碼都是基於整個部門的。歐拉項目#3雙師
`
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;
}
凡爲插入的類型是雙和Prime.get(ⅰ)Primenumber的。 以Integer 70爲例,我的程序在70,35,7,1中打印出[2,5,7] 。但顯然這不適用於double類型的數字,我不知道如何得到沒有逗號的整數不是雙倍。
爲什麼不能直接調用'Primenumbers(Math.round(Math.sqrt(600851475143)))'?請解釋你的代碼打算做什麼,以及爲什麼。 – 9000