#######################################################################################################################################
# #
# 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... #