2011-06-05 47 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)