Surmonter l'erreur « Nombre entier trop grand » pour 600851475143
L'extrait de code fournissait des tentatives pour trouver le plus grand facteur premier du nombre 600851475143. Cependant, lors de l'exécution du code, il rencontre un "Nombre entier trop grand". erreur. Cette erreur se produit car 600851475143 dépasse la valeur maximale pouvant être représentée par un entier de 32 bits, qui est le type utilisé dans le code.
Pour résoudre ce problème et trouver le plus grand facteur premier de 600851475143, le code doit utiliser un type de données capable de représenter des valeurs plus grandes. Ceci peut être réalisé en modifiant le type de i en long, un entier de 64 bits.
Voici le code corrigé :
public class Three { public static void main(String[] args) { Three obj = new Three(); obj.function(600851475143L); } private Long function(long i) { Stack<Long> stack = new Stack<Long>(); for (long j = 2; j <= i; j++) { if (i % j == 0) { stack.push(j); } } return stack.pop(); } }
En écrivant le littéral 600851475143 comme 600851475143L, il est explicitement représenté par un entier de 64 bits. Cela permet au code de trouver et de renvoyer avec précision le plus grand facteur premier du nombre donné.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!