Calcul de factoriel (vitesse)

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

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.