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<Long>();
for (long j = 2; j <= i; j++) {
if (i % j == 0) {
stack.push(j);
}
}
return stack.pop();
}
}
d'erreur Lorsque le code ci-dessus est exécuté, il produit une erreur sur la ligne obj.function(600851475143);
. Pourquoi?« nombre entier trop grand » message pour 600851475143
aussi il n'y a pas de différence entre "l" et "L"? – user446654
@ user446654: Non, il y en a. Ce dernier est plus lisible. Lisez "Java Puzzler" pour cela. –
@ user446654: évolution des pensées @Thilo sur la limite de mémoire possible dépassant Je veux ajouter mes 2 pièces de monnaie: vous avez choisi vraiment, vraiment mauvais algorithme pour rechercher tous les diviseurs d'un nombre si vous voulez fonctionner avec de grands nombres comme dans votre exemple . Quelque chose basé sur * la programmation dynamique * fonctionnerait probablement mieux. Google sur cela pour d'autres résultats. – Roman