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