CALCULER LA FACTORIELLE JUSQU'À 5409! AVEC JSP ET L'AFFICHER SUR BROWSER EN UN T
Scupper
Messages postés28Date d'inscriptionjeudi 15 octobre 2009StatutMembreDernière intervention12 décembre 2013
-
23 mars 2011 à 04:21
piksou14
Messages postés1Date d'inscriptionsamedi 9 décembre 2017StatutMembreDernière intervention 9 décembre 2017
-
9 déc. 2017 à 02:22
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
piksou14
Messages postés1Date d'inscriptionsamedi 9 décembre 2017StatutMembreDernière intervention 9 décembre 2017 9 déc. 2017 à 02:22
bien
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 janvier 2015 23 avril 2011 à 01:47
Voici un algo beaucoup plus rapide
public Xint factorial(int n)
{
if (n < 0){
throw new ArithmeticException("Factorial: n has to be >= 0, but was " + n);
}
if (n < 2){
return Xint.ONE;
} long h n / 2, q h * h; long r (n & 1) 1 ? 2 * q * n : 2 * q;
Xint f = Xint.valueOf(r);
for (int d = 1; d < n - 2; d += 2){
f = f.multiply(q -= d);
}
return f;
}
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 janvier 2015 23 avril 2011 à 01:24
C’est ce que l'on appelle de la programmation trivial ... Tu utilise la définition mathématique de la factoriel pour ton calcul qui est O(n!), c'est à dire très coûteuse en temps...
L'algorithmie nous apprend qu'il existe d'autre méthodes de calcul de factorielle qui sont O(n2), c'est à dire beaucoup plus rapides.
Scupper
Messages postés28Date d'inscriptionjeudi 15 octobre 2009StatutMembreDernière intervention12 décembre 2013 23 mars 2011 à 04:21
puisque le serveur a refuser de télécharger le fichier ZIP j'ai du écrire le code séparément :S
9 déc. 2017 à 02:22
23 avril 2011 à 01:47
public Xint factorial(int n)
{
if (n < 0){
throw new ArithmeticException("Factorial: n has to be >= 0, but was " + n);
}
if (n < 2){
return Xint.ONE;
} long h n / 2, q h * h; long r (n & 1) 1 ? 2 * q * n : 2 * q;
Xint f = Xint.valueOf(r);
for (int d = 1; d < n - 2; d += 2){
f = f.multiply(q -= d);
}
return f;
}
23 avril 2011 à 01:24
L'algorithmie nous apprend qu'il existe d'autre méthodes de calcul de factorielle qui sont O(n2), c'est à dire beaucoup plus rapides.
23 mars 2011 à 04:21