Calculer plus confortablement (2n)! / (n!)² à l'aise Blaise

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Calculer plus confortablement (2n)! / (n!)² à l'aise Blaise

Message par Ollivier »

Salut à vous,

Je me suis lancé timidement dans le projet Euler, et je suis tombé sur un algo qui devait mettre 16 ans à trouver la soluce. Alors j'ai gratté, gratté, gratté... Et j'ai rien trouvé excepté une suite non identifiée... La frustration engendrée était bien au-delà de la panne au plumard. Alors j'ai tapé la suite maths sur Google et je suis tombé pile poil sur mes pieds sans rien comprendre, grâce au triangle de Blaise Pascal.

Alors voici l'une des nombreuses mais obscures possibilités d'application qu'offre ce triangle: vous faciliter la vie sur un calcul à base de factorielles qui met très vite K.O. le CPU si on ne trouve pas une astuce.

Ce calcul c'est (2n)! / (n!)². n ne dépasse pas 10 avec les quads, et en plus c'est le long principe de la récursivité pour les factorielles. A la place, il y a l'application de la médiane du triangle de Pascal qui n'utilise que des additions. Sans se compliquer la vie, on n'utilise plus les factorielles et n peut atteindre 33. Mathématiquement, ça semble toujours faiblard mais vu la simplicité du calcul, je trouve cela très pratique.

Code : Tout sélectionner

; Préparation du triangle de Pascal
      Global Dim Pas.Q(63, 63)
      For I = 0 To 63
            Pas(0, I) = I + 2
            Pas(I, 0) = I + 2
      Next
      X = 1
      For X = 1 To 63
            For Y = 1 To 63
                  Pas(X, Y) = Pas(X - 1, Y) + Pas(X, Y - 1)
            Next
      Next
      
      
; Application de (2n)! / (n!)² avec n = I et la cellule du tableau Pas(I - 1, I - 1) son résultat
      For I = 1 To 33
            Debug Str(I) + " : " + Str(Pas(I - 1, I - 1) )
      Next