2011-06-05 44 views
1

我有幾個方法來計算任何mumber的最大的主要因素,但它不會編譯,因爲它說,我的投入是超出範圍類型的數據類型來表示一個數

public class ProjectEuler3 { 


    public static void main(String[] args) { 
    System.out.println (findfactors(600851475143)); 
    } 


    public static float findfactors(long n){ 
     long[]factors=new long[1000];int nooffactor=0; 
     int c =0; 
     for(long i=2;i<n;i++){ 
       if (findPrime(i)){ 
       factors[c++]=i; 
      nooffactor++;} 

     } 

     return factors[nooffactor-1]; 


    } 
    public static boolean findPrime(float n){ 

     for(long i=2;i<n;i++){ 
      if(n%i==0) 
       return false; 
     } 
     return true; 
    } 

} 

回答

4

後綴你L價值表示long類型的常數:

findfactors(600851475143L) 
+0

謝謝爲你的答案 – logic101 2011-06-05 17:59:55

2

如果您輸入代碼中的數字,它們被視爲整數值。但是,600851475143大於可以容納的整數。正因爲如此,你必須附加一個「L」將其標記爲長整型:

findfactors(600851475143L)