2011-06-05 2 views
1

j'ai quelques méthodes pour calculer le plus grand facteur premier de tout mumber mais il compile l'habitude, car il dit que mon entrée est hors de portéetype de type de données pour représenter un nombre

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; 
    } 

} 

Répondre

4

Postfix valeur avec L pour désigner une constante de type long:

findfactors(600851475143L) 
+0

merci pour ta réponse – logic101

2

Si vous saisissez des numéros dans votre code, ils sont traités comme des valeurs entières. Cependant, 600851475143 est plus grand qu'un entier peut contenir. En raison de cela, vous devez ajouter un « L » pour le marquer comme long int:

findfactors(600851475143L)

Questions connexes