Résoudre l'erreur « Nombre entier trop grand » pour 600851475143
Considérez l'extrait de code suivant :
public class Three { public static void main(String[] args) { Three obj = new Three(); obj.function(600851475143); } private Long function(long i) { Stack<Long> stack = new Stack<>(); for (long j = 2; j <= i; j++) { if (i % j == 0) { stack.push(j); } } return stack.pop(); } }
Quand ce code est exécuté avec le littéral 600851475143 passé à la fonction, il renvoie une erreur "Nombre entier trop grand". Pour comprendre pourquoi, nous devons approfondir les types de données impliqués.
En Java, il existe des types de données primitifs, tels que int et long, qui représentent des nombres sans objets.
Le problème ici est que 600851475143 dépasse la valeur maximale représentable par un int. Pour résoudre ce problème, nous devons utiliser un littéral de type long en ajoutant un suffixe "L" au numéro : 600851475143L.
obj.function(600851475143L);
Avec cette modification, le code s'exécutera sans rencontrer l'erreur et renverra le plus grand facteur premier de 600851475143L.
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!