Problème avec les factorielles [projecteuler.net]
Bonjour,
Je suis actuellement en train de résoudre ce problème : https://projecteuler.net/problem=20,
cependant un gros problème que je ne comprend pas se pose à moi; lorsque je souhaite calculer
avec mon algorithme le factorielle de 5, tout marche parfaitement. Mais quand j'essais par exemple
de calculer le factorielle de 100, ça marche plus, ça retourne 0. Je me suis demandé si c'était un problème de type
de variable, cependant que ce soit des long ou des int, le résultat est identique...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| public static void main(String[] args) {
System.out.println(factorial(5));//affiche 120
System.out.println(factorial(100)); //afficher 0 alors que le resultat devrait etre 9.332622e+157
}
public static int factorial(int value) {
int result = 0;
if(isStrictlyPopsitive(value)) {
result = 1;
for(int i = 1; i <= value; i++)
result *= i;
}
return result;
}
public static boolean isStrictlyPositive(int value) {
if(value > 0)
return true;
else
return false;
} |
PS: J'ai décidé de ne pas vous montrer les autres méthodes qui de toutes façon marchent parfaitement bien,
et j'en profite pour dire que sans vérifier si la valeur est strictement positive, le résultat reste le même.