#######################################################################################################################################
#                                                                                                                                     #
#         C O N S T R U C T I O N   D U   T R I A N G L E   D E   P A S C A L  :                                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.TRPA.11.$U' :                                                                                            #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20140729113547).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____NiveauInitial            0

$Z                  SETParam            _____Cn                       63

$Z                  setParam            _____NombresPremiers          (2 3)

$Z                  SformatI

$Z                  if                  ($_____Cn <= 64) then
$Z                                      Suq
$Z                  else
$Z                                      Sud
$Z                  endif

$Z                  set                 SaVe_dimX=$dimX

$Z                  FilSTmpB            FImAgE

$Z                  $xci/init$X         standard=FAUX                                                                                   \
$Z                                      valeur=$_____NiveauInitial                                                                      \
$Z                                      R=$FImAgE                                                                                       \
$Z                                                                              $formatI

$Z                  set                 MiNiMuM=0

$Z                  set                 CoEfFiCiEnT_n=$MiNiMuM
$Z                  set                 CoOrDoNnEe_Y=$Ymin

$Z                  while               ($CoEfFiCiEnT_n <= $_____Cn)
$Z                                      set                 CoEfFiCiEnT_m=$MiNiMuM
$Z                                      @                   CoOrDoNnEe_X = $Xmax / 2
$Z                                      @                   CoOrDoNnEe_X = $CoOrDoNnEe_X - $CoOrDoNnEe_Y

$Z                                      while               ($CoEfFiCiEnT_m <= $CoEfFiCiEnT_n)
$Z                                                          set                 ArGuMeNtS_nm="$K_VIDE"
$Z                                                          set                 ArGuMeNtS_nm="$ArGuMeNtS_nm"" n=$CoEfFiCiEnT_n"
$Z                                                          set                 ArGuMeNtS_nm="$ArGuMeNtS_nm"" m=$CoEfFiCiEnT_m"
$Z                                                          set                 ArGuMeNtS_nm="$ArGuMeNtS_nm"" Pascal=VRAI"
$Z                                      # L'utilisation de "Pascal=VRAI" est destinee a permettre d'aller jusqu'a n=64 sans calculer  #
$Z                                      # de factorielles ('v $ximf/produits$FON factorielle.est.trop.grand')...                      #

$Z                                                          set                 CoEfFiCiEnT_nm=`$xcg/COnm.01$X $ArGuMeNtS_nm`

$Z                                                          set                 CuMuL=1

$Z                                                          foreach             NoMbRe ($_____NombresPremiers)
$Z                                                                              set  ReStE=`$xcg/REST.01$X a=$CoEfFiCiEnT_nm b=$NoMbRe`
$Z                                                                              if   ($ReStE == 0) then
$Z                                                                                   @                   CuMuL = $CuMuL * $NoMbRe
$Z                                                                              else
$Z                                                                              endif
$Z                                                          end

$Z                                                          $xci/S_point$X      A=$FImAgE                                               \
$Z                                                                              standard=FAUX                                           \
$Z                                                                              X=$CoOrDoNnEe_X Y=$CoOrDoNnEe_Y                         \
$Z                                                                              valeur=$CuMuL                                           \
$Z                                                                              R=$FImAgE                                               \
$Z                                                                                                                      $formatI
$Z                                      # Construction d'une image de manoeuvre contenant le produit des diviseurs premiers (qui      #
$Z                                      # "tombent" juste donc...) des 'C(n,m)'. On notera que ce produit est egal a 1 s'il n'y a     #
$Z                                      # aucun diviseur premier appartenant a la liste '$_____NombresPremiers'...                    #
$Z                                      #                                                                                             #
$Z                                      # On utilise le produit des diviseurs premiers pour marquer un point dont le 'CoEfFiCiEnT_nm' #
$Z                                      # est divisible par un diviseur premier appartenant a la liste '$_____NombresPremiers' afin   #
$Z                                      # de pouvoir si besoin est retrouver les diviseurs a partir du niveau d'un point et ce grace  #
$Z                                      # au theoreme qui enonce que la decompistion en facteurs premiers est unique (a l'ordre       #
$Z                                      # pres...).                                                                                   #

$Z                                                          @                   CoEfFiCiEnT_m = $CoEfFiCiEnT_m + 1
$Z                                                          @                   CoOrDoNnEe_X = $CoOrDoNnEe_X + 2
$Z                                      end

$Z                                      @                   CoEfFiCiEnT_n = $CoEfFiCiEnT_n + 1
$Z                                      @                   CoOrDoNnEe_Y = $CoOrDoNnEe_Y + 1
$Z                  end

$Z                  set                 TrAnSlAtIoN=`calcul (1/2)/2`

$Z                  $xci/move$X                                                                                                         \
$Z                                      A=$FImAgE                                                                                       \
$Z                                      standard=FAUX                                                                                   \
$Z                                      yR=$TrAnSlAtIoN                                                                                 \
$Z                                                                              $formatI                                          |     \
$Z                  $xci/Sx$X                                                                                                           \
$Z                                      standard=FAUX                                                                                   \
$Z                                                                              $formatI                                          |     \
$Z                  $xci/format.01$X                                                                                                    \
$Z                                      standard=FAUX                                                                                   \
$Z                                      mode=0                                                                                          \
$Z                                      R=$FImAgE.1                                                                                     \
$Z                                                                              $sformatIR

$Z                  RformatI

$Z                  $xci/acces$X        A=$FImAgE.1                                                                                     \
$Z                                      standard=FAUX zero=FAUX                                                                         \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                              $formatI

$Z                  if                  ($#_____NombresPremiers > 1) then
$Z                                      $xci/somme_02$X     A1=$FImAgE.1                                                                \
$Z                                                          A2=1                                                                        \
$Z                                                          standard=FAUX                                                               \
$Z                                                                                                  $formatI                      |     \
$Z                                      $xci/logarithme$X                                                                               \
$Z                                                          standard=FAUX                                                               \
$Z                                                          cx=0 cy=0 cn=1                                                              \
$Z                                                                                                  $formatI                      |     \
$Z                                      $xci/acces$X                                                                                    \
$Z                                                          standard=FAUX zero=FAUX                                                     \
$Z                                                          R=$_____ImageR.LOG                                                          \
$Z                                                                                                  $formatI
$Z                                      # Le logarithme n'est pris que s'il y a plusieurs nombres premiers...                         #
$Z                  else
$Z                  endif

$Z                  FilSTmpE            FImAgE

$Z                  set                 TrAnS_X=`calcul ($dimX/$SaVe_dimX)/2`
$Z                  set                 TrAnS_X=`$xci/coordonnees$X ex=VRAI x=$TrAnS_X ey=FAUX ez=FAUX normaliser=VRAI`

$Z                  $xci/scroll$X       A=$_____ImageR                                                                                  \
$Z                                      trX=$TrAnS_X                                                                                    \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                              $formatI
$Z                                      # Le centrage horizontal a ete introduit le 20200626141056...                                 #



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.