#######################################################################################################################################
#                                                                                                                                     #
#         V I S U A L I S A T I O N   D E S   N O M B R E S   " F R I A B L E S "  :                                                  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.NFRI.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20220905130335).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Nombre                   130

#20220905163946____:$Z                  setParam            _____Palette                  $xiP/arc_ciel.C1                            #
#20220912120654____:$Z                  setParam            _____Palette                  $xiP/random.14                              #
$Z                  setParam            _____Palette                  $xiP/random.C1

$Z                  setParam            _____RayonG                   0.003
#20220912112811____:$Z                  setParam            _____NiveauG                  $GRIS_4                                     #
$Z                  setParam            _____NiveauG                  `calculINS ($GRIS_1+$GRIS_2)/2`
$Z                                      # Definition de la Grille...                                                                  #

$Z                  setParam            _____ARayon                   0.010
$Z                                      # Definition du facteur de conversion des exposants en rayons...                              #

$Z                  setParam            _____RayonL                   0.015
$Z                                      # Definition du rayon des spheres de Legende du coloriage des nombres premiers...             #

$Z                  setParam            _____ERayon                   2
$Z                                      # Definition de la fonction 'pow(...)' de passage des exposants aux rayons de visualisation.  #

$Z                  setParam            _____Zoom                     0.9

$Z                  setParam            _____NAuCarre                 VRAI

$Z                  setParam            _____Y0                       -0.03
$Z                  setParam            _____Z0                       +0.5

$Z                  set                 PaRaMp1="$K_VIDE"
$Z                  set                 PaRaMp1="$PaRaMp1"" LISTE_Z=$_____Z0"
$Z                  set                 PaRaMp1="$PaRaMp1"" Lz=1000"
$Z                  set                 PaRaMp1="$PaRaMp1"" minimumT=1.0 maximumT=1.0"
$Z                  set                 PaRaMp1="$PaRaMp1"" ZOOM=$_____Zoom"
$Z                  set                 PaRaMp1="$PaRaMp1"" editer_extrema_hors=FAUX"

$Z                  set                 PaRaMp2="$K_VIDE"
$Z                  set                 PaRaMp2="$PaRaMp2"" isoles=FAUX chainer=FAUX"
$Z                  set                 PaRaMp2="$PaRaMp2"" ajuster_points=VRAI"
$Z                  set                 PaRaMp2="$PaRaMp2"" equidistance=VRAI distance_minimale=0.008"
$Z                  set                 PaRaMp2="$PaRaMp2"" N_AU_CARRE=$_____NAuCarre"

$Z                  set                 PaRaMp3="$K_VIDE"
$Z                  set                 PaRaMp3="$PaRaMp3"" isoles=VRAI chainer=FAUX"

$Z                  @                   NoMbReS1 = 2
$Z                  @                   NoMbReSN = $_____Nombre

$Z                  saut
$Z                  echo                "PremierNombreEntier=$NoMbReS1"
$Z                  echo                "DernierNombreEntier=$NoMbReSN"
$Z                                      # Editions introduites le 20220925121819...                                                   #
$Z                  saut

$Z                  set                 HoMoThEtIe=`$xcg/INVZ.01$X x=$NoMbReSN`

$Z                  FilSTmpB            FaCtOrs

$Z                  $xci/valeurs_prem$X                                                                                                 \
$Z                                      premiere=$NoMbReS1 derniere=$NoMbReSN                                                           \
$Z                                      editer_diviseurs=VRAI                                                                           \
$Z                                      editer_nombres=VRAI                                                                             \
$Z                                      diviseurs_premiers=VRAI                                                                         \
$Z                                      multiplicite_diviseurs_premiers=VRAI                                                      |     \
$Z                  $SE                 -e "s/ +[$Alphabet_0_9][$Alphabet_0_9]*"'$//'                                                   \
$Z                                                                                        >> $FaCtOrs

$Z                  set                 LiStE_PrEmIeRs=`$CA $FaCtOrs | $SE -e "s/^+[^:]*://" -e "s/=//g" | $R "+" "$K_NL" | $SOR -u -n`

$Z                  Techo               "Liste des $#LiStE_PrEmIeRs nombres premiers utiles :"
$Z                  echo                "$LiStE_PrEmIeRs"
$Z                  saut

$Z                  set       LiStE_NPrEmIeRs=`echo $LiStE_PrEmIeRs | $R "$K_BLANC" "$K_NL" | $NL | $AW ' { print $1 "+" $2 } '`

$Z                  FilSTmpB            LiStE_PoInTs

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=$NoMbReS1 derniere=$NoMbReSN                                                           \
$Z                                      vD=$NoMbReS1       vA=$NoMbReSN                                                                 \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                                                                        >> $LiStE_PoInTs

$Z                  $xrv/neutre$X                                                                                                       \
$Z                                      ne=0                                                                                            \
$Z                                      fichier=$LiStE_PoInTs                                                                           \
$Z                                      exemplaires=2                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs$COORD_X

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=$NoMbReS1 derniere=$NoMbReSN                                                           \
$Z                                      vD=$NoMbReS1       vA=$NoMbReS1                                                                 \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs.1

$Z                  $PAST               $LiStE_PoInTs.1 $LiStE_PoInTs                                                             |     \
$Z                  $R                  "$K_TAB" "$K_NL"                                                                                \
$Z                                                                                        >  $LiStE_PoInTs$COORD_Y

$Z                  set                 NPointsX=`$CA $LiStE_PoInTs$COORD_X | $WCl`
$Z                  set                 NPointsY=`$CA $LiStE_PoInTs$COORD_Y | $WCl`
$Z                  set                 NPoints_=`$xcg/MIN2.01$X x=$NPointsX y=$NPointsY`

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=1 iterations=$NPoints_                                                                       \
$Z                                      $PaRaMp1                                                                                        \
$Z                                      AX=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_X=$LiStE_PoInTs$COORD_X                                                                   \
$Z                                      AY=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_Y=$LiStE_PoInTs$COORD_Y                                                                   \
$Z                                      LISTE_RAYON=$_____RayonG                                                                        \
$Z                                      LISTE_ROUGE=$_____NiveauG                                                                       \
$Z                                      LISTE_VERTE=$_____NiveauG                                                                       \
$Z                                      LISTE_BLEUE=$_____NiveauG                                                                       \
$Z                                      $PaRaMp2                                                                                        \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$xTV/GRILLE                                                                                   \
$Z                                                                                                                      $formatI
$Z                                      # Generation d'une grille verticale representant tous les nombres entiers a partir de 2...    #

$Z                  FilSTmpE            LiStE_PoInTs

$Z                  FilSTmpB            LiStE_PoInTs

$Z                  echo                $LiStE_PrEmIeRs                                                                           |     \
$Z                  $R                  "$K_BLANC" "$K_NL"                                                                              \
$Z                                                                                        >  $LiStE_PoInTs.1

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=$NoMbReS1 derniere=$NoMbReSN                                                           \
$Z                                      vD=$NoMbReSN       vA=$NoMbReSN                                                                 \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs.2

$Z                  $PAST               $LiStE_PoInTs.1 $LiStE_PoInTs.2                                                           |     \
$Z                  $R                  "$K_TAB" "$K_NL"                                                                                \
$Z                                                                                        >  $LiStE_PoInTs$COORD_X

$Z                  $xrv/neutre$X                                                                                                       \
$Z                                      ne=0                                                                                            \
$Z                                      fichier=$LiStE_PoInTs.1                                                                         \
$Z                                      exemplaires=2                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs$COORD_Y

$Z                  set                 NPointsX=`$CA $LiStE_PoInTs$COORD_X | $WCl`
$Z                  set                 NPointsY=`$CA $LiStE_PoInTs$COORD_Y | $WCl`
$Z                  set                 NPoints_=`$xcg/MIN2.01$X x=$NPointsX y=$NPointsY`

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=1 iterations=$NPoints_                                                                       \
$Z                                      $PaRaMp1                                                                                        \
$Z                                      AX=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_X=$LiStE_PoInTs$COORD_X                                                                   \
$Z                                      AY=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_Y=$LiStE_PoInTs$COORD_Y                                                                   \
$Z                                      LISTE_RAYON=$_____RayonG                                                                        \
$Z                                      LISTE_ROUGE=$_____NiveauG                                                                       \
$Z                                      LISTE_VERTE=$_____NiveauG                                                                       \
$Z                                      LISTE_BLEUE=$_____NiveauG                                                                       \
$Z                                      $PaRaMp2                                                                                        \
$Z                                      chiffres=0                                                                                      \
$Z                                      fond=VRAI F=$xTV/GRILLE                                                                         \
$Z                                      R=$xTV/GRILLE                                                                                   \
$Z                                                                                                                      $formatI
$Z                                      # Generation d'une grille horizontale representant tous les nombres premiers a partir de 2... #

$Z                  FilSTmpE            LiStE_PoInTs

$Z                  FilSTmpB            LiStE_PoInTs

$Z                  set                 LiStE=`$CA $FaCtOrs | $SE -e 's/:.*$//'`

$Z                  FilSTmpB            FExPoSaNtS

$Z                  foreach   NoMbRe ($LiStE)
$Z                            set       DeCoMpOs=`$CA $FaCtOrs | $GRE "^$NoMbRe"":" | $SE -e "s/^$NoMbRe""://" -e "s/=//g"`
$Z                            set       DeCoMpOs=`echo "$DeCoMpOs" | $R "$K_BLANC" "$K_NL" | $UNI -c | $SE -e "s/^ *//" -e "s/  */=/g"`

$Z                            foreach   FaCtEuR ($DeCoMpOs)
$Z                                      set       FaCtEuR=`echo "$FaCtEuR" | $SE -e"s/=/ /"`
$Z                                      # Le vecteur '$FaCtEuR' contient dans l'odre l'exposant (obtenu grace a '$UNI -c' ci-dessus)  #
$Z                                      # du facteur premier qui lui-meme est le second element du vecteur...                         #

$Z                                      set       ExPoSaNt=$FaCtEuR[1]
$Z                                      set       NoMbRe_PrEmIeR=$FaCtEuR[2]

$Z                                      set       TExPoSaNt=`$CA $FExPoSaNtS | $GRE "^$ExPoSaNt "`

$Z                                      if        ("$TExPoSaNt" == "$K_VIDE") then
$Z                                                set       FExPoSaNt=`calcul pow($ExPoSaNt,1/$_____ERayon)`

$Z                                                echo      "$ExPoSaNt $FExPoSaNt"                                                      \
$Z                                                                                                            >>! $FExPoSaNtS
$Z                                      # Cette optimisation est destinee a ne pas recalculer inutilement plusieurs fois les memes    #
$Z                                      # fonction 'pow(...)'. On notera l'exposant egal a 1/2 de facon assez arbitraire...           #
$Z                                      else
$Z                                                set       FExPoSaNt=$TExPoSaNt[2]
$Z                                      endif
$Z                                      echo      "$NoMbRe"                                                                             \
$Z                                                                                                  >>! $LiStE_PoInTs$COORD_X
$Z                                      # La coordonnee 'X' est le nombre entier courant...                                           #
$Z                                      echo      "$NoMbRe_PrEmIeR"                                                                     \
$Z                                                                                                  >>! $LiStE_PoInTs$COORD_Y
$Z                                      # La coordonnee 'Y' est le nombre premier facteur courant...                                  #
$Z                                      echo      "$FExPoSaNt"                                                                          \
$Z                                                                                                  >>! $LiStE_PoInTs$RAYON
$Z                                      # Le rayon est fonction de l'exposant '$ExPoSaNt' du nombre premier facteur courant...        #

$Z   set       NumeroNoMbRe_PrEmIeR=`echo $LiStE_NPrEmIeRs | $R "$K_BLANC" "$K_NL" | grep "$NoMbRe_PrEmIeR"'$' | $SE -e 's/+.*$//'`
$Z                                      # Calcul du numero du nombre premier courant '$NoMbRe_PrEmIeR'...                             #

$Z                                      IfBasic   ($NumeroNoMbRe_PrEmIeR > $BLANC) ThenBasic
$Z                                                echo      `$xcg/SCAL.01$X x=$NumeroNoMbRe_PrEmIeR a=$NoMbReSN n=$BLANC entiers=VRAI`  \
$Z                                                                                                            >>! $LiStE_PoInTs$NIVEAU
$Z                                      # Le niveau est fonction du nombre premier courant et plus precisemment de son numero. On     #
$Z                                      # notera qu'il est preferable d'utiliser le numero du nombre premier courant plutot que ce    #
$Z                                      # dernier car, en effet, ainsi on est sur que les niveaux coloriant deux nombres premiers     #
$Z                                      # consecutifs (par exemple 5 et 7) seront tres differents, a condition d'utiliser une palette #
$Z                                      # du type 'v $xigP/random.C1$Z verifier_distance.VRAI' dans laquelle deux niveaux consecutifs #
$Z                                      # sont associes a deux triplets {R,V,B} tres differents...                                    #
$Z                                      ElseBasic
$Z                                                echo      "$NumeroNoMbRe_PrEmIeR"                                                     \
$Z                                                                                                            >>! $LiStE_PoInTs$NIVEAU
$Z                                      EndifBasic
$Z                            end
$Z                  end

$Z                  FilSTmpE            FExPoSaNtS

$Z                  set                 NPointsX=`$CA $LiStE_PoInTs$COORD_X | $WCl`
$Z                  set                 NPointsY=`$CA $LiStE_PoInTs$COORD_Y | $WCl`
$Z                  set                 NPoints_=`$xcg/MIN2.01$X x=$NPointsX y=$NPointsY`

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=1 iterations=$NPoints_                                                                       \
$Z                                      $PaRaMp1                                                                                        \
$Z                                      AX=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_X=$LiStE_PoInTs$COORD_X                                                                   \
$Z                                      AY=$HoMoThEtIe                                                                                  \
$Z                                      LISTE_Y=$LiStE_PoInTs$COORD_Y                                                                   \
$Z                                      Ar=$_____ARayon                                                                                 \
$Z                                      LISTE_RAYON=$LiStE_PoInTs$RAYON                                                                 \
$Z                                      p=$_____Palette                                                                                 \
$Z                                      LISTE_NIVEAU=$LiStE_PoInTs$NIVEAU                                                               \
$Z                                      $PaRaMp3                                                                                        \
$Z                                      fond=VRAI F=$xTV/GRILLE                                                                         \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI
$Z                                      # Generation finale de la "friabilite"...                                                     #

$Z                  $CA       $LiStE_PoInTs$NIVEAU                                                                                |     \
$Z                  $SE       -e "s/^+//"                                                                                         |     \
$Z                  $SOR      -u -n                                                                                                     \
$Z                                                                              >>! $LiStE_PoInTs.1$NIVEAU

$Z                  set                 NPoints_=`$CA $LiStE_PoInTs.1$NIVEAU | $WCl`

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=1         derniere=$NPoints_                                                           \
$Z                                      vD=0               vA=1                                                                         \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs.1$COORD_X

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=1         derniere=$NPoints_                                                           \
$Z                                      vD=$_____Y0        vA=$_____Y0                                                                  \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                                                                        >  $LiStE_PoInTs.1$COORD_Y

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=1 iterations=$NPoints_                                                                       \
$Z                                      $PaRaMp1                                                                                        \
$Z                                      LISTE_X=$LiStE_PoInTs.1$COORD_X                                                                 \
$Z                                      LISTE_Y=$LiStE_PoInTs.1$COORD_Y                                                                 \
$Z                                      LISTE_RAYON=$_____RayonL                                                                        \
$Z                                      p=$_____Palette                                                                                 \
$Z                                      LISTE_NIVEAU=$LiStE_PoInTs.1$NIVEAU                                                             \
$Z                                      $PaRaMp3                                                                                        \
$Z                                      fond=VRAI F=$_____ImageR                                                                        \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI
$Z                                      # Mise en place du code de couleurs utilises pour visualiser les nombres premiers {2,3,...}.  #

$Z                  FilSTmpE            LiStE_PoInTs

$Z                  FilSTmpE            FaCtOrs



Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.