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