begin process at 2008 07 18 20:09:55
1 212 564 membres
417 nouveaux aujourd'hui
14 164 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCUL DE FACTORIEL (VITESSE)


Information sur la source

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

  • 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.
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.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • nn2!.xlsTélécharger ce fichier [Réservé aux membres club]177 152 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de us_30 le 31/03/2008 22:27: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...

  • signaler à un administrateur
    Commentaire de danbo le 01/04/2008 19:28:25

    merci,

    j'ai bien compris le principe de la mise à jour, aussi.

Ajouter un commentaire

Pub



Appels d'offres

Dessins techniques
Budget : 60€
Animation Flash - Doma...
Budget : 370€
Application flash medi...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS