2014-04-20 73 views
0

我目前正在研究項目的歐拉問題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類型的數字,我不知道如何得到沒有逗號的整數不是雙倍。

+0

爲什麼不能直接調用'Primenumbers(Math.round(Math.sqrt(600851475143)))'?請解釋你的代碼打算做什麼,以及爲什麼。 – 9000

回答

2

使用long而不是intdoublelong是一個數據類型,可以存儲最多2^64(2^63-1)的整數值。

您也可以使用BigInteger這是一個可以存儲任何大小的整數的對象。

+0

謝謝,幫助:) – user3554329