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