Calcul de factoriel (vitesse)

Soyez le premier à donner votre avis sur cette source.

Vue 8 600 fois - Téléchargée 270 fois

Description

après une approche de calcul juste de factoriel, je m'attaque à la vitesse. Le résultat n'est pas encore probant, il y a des internautes qui ont des algorithmes plus rapides, et je vais tenter d'aller au delà. le code met 9 secondes pour 1000! et 39 secondes pour 2000! avec ub CPU à 3 Ghz.
J'utilise un calcul matriciel tout bête, je vais m'attaquer à dispenser le code à traiter les tonnes de 0 qu'il créé.

Source / Exemple :


le source est commenté.
le code aligne chaque chiffre de n dans la ligne 0 d'une matrice appelée tablo(), et les chiffres de n-1 dans la colonne 0 de la même matrice.
A la croisée des lignes et colonnes, il place le produit ligne x colonne.
Il somme toutes les lignes de chaque colonne et reporte le total de chaque colonne dans la ligne 0.
il remplace ensuite n-1 par n-2 dans la colonne 0, et refait les calculs ligne x colonne. etc, jusqu'à ce que n-k =1.
A chaque fois qu'il fait le report des totaux dans la ligne 0, il réduit chaque cellule dépassant 9, les dizaines étant ajoutées à la cellule immédiatement supérieure (c'est la dessus que je voudrais aussi gagner du temps). ainsi , la ligne 0 n'a que des valeurs allant de 0 à 9.

Conclusion :


Pas génial, mais amusant, surtout quand il s'agit de la course au temps.

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
22
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
3 décembre 2009

merci,

j'ai bien compris le principe de la mise à jour, aussi.
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
Bonsoir,

"Pas génial, mais amusant, surtout quand il s'agit de la course au temps."

J'ai eu la même démarche, et on apprends par cette démarche... Tant sur le plan mathématique (malgré ce qu'on pourrait croire...), que sur le plan informatique ou que sur le plan de la recherche algorithmique... JE te laisse donc chercher, et je regarderai les progrès avec intérêt, pour détecter une bonne nouvelle idée d'optimisation en la matière... Par contre, il serait intéressant d'en expliquer les principes fondamentaux, le cas échéant.

Bonne continuation,

Amicalement,
Us.

PS : IL est préférable de remettre la source à jour, et non de reposter à chaque fois... C'est un principe à respecter... La multiplication d'une même source à toute les "chances" d'être considérée comme abusive...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.