#######################################################################################################################################
#                                                                                                                                     #
#         V I S U A L I S A T I O N   D E S   N O M B R E S   P R E M I E R S   J U M E A U X  :                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.PRIM.H1.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20150401105451).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z        setParam            _____PDistance                2

$Z        setParam            _____PNiveauPN                $GRIS_1

$Z        setParam            _____PNiveauNNP               $GRIS_0

$Z        setParam            _____PNiveauNP                $GRIS_8

$Z        setParam            _____PNiveauNPJ1              $GRIS_2
$Z                                      # Definit le niveau du premier (le plus petit) d'un couple de nombres premiers.               #

$Z        setParam            _____PNiveauNPJ2              $GRIS_5
$Z                                      # Definit le niveau du second (le plus grand) d'un couple de nombres premiers.                #

$Z        setParam            _____PNiveauS                 $GRIS_3

$Z        set                 FaCtEuR=16
$Z                                      # On notera qu'il est imperatif que '$FaCtEuR' soit un carre pair qui de plus divise          #
$Z                                      # exactement 1024 (de 'Sdu') si l'on veut que la spirale soit bien "centree" en               #
$Z                                      # traversant les carres...                                                                    #
$Z        set                 XmAx=`calculINS (($Xmax-$Xmin)/$FaCtEuR)+$Xmin`
$Z        set                 YmAx=`calculINS (($Ymax-$Ymin)/$FaCtEuR)+$Ymin`

$Z        @                   VaLiDeX = $dimX % $FaCtEuR
$Z        @                   VaLiDeY = $dimY % $FaCtEuR

$Z        if                  (($VaLiDeX != 0) || ($VaLiDeY != 0)) then
$Z                            EROR                "Le facteur ($FaCtEuR) ne divise pas les dimension ($dimX et $dimY)."
$Z        else
$Z        endif

$Z        SformatI
$Z        XYmaxNe             $XmAx $YmAx

$Z        $xrk/NPremiers.01$X                                                                                                           \
$Z                            visualiser_nombres_premiers=VRAI                                                                          \
$Z                            distance_nombres_premiers_jumeaux=$_____PDistance                                                         \
$Z                            niveau_premier_nombre=$_____PNiveauPN                                                                     \
$Z                            niveau_nombres_non_premiers=$_____PNiveauNNP                                                              \
$Z                            niveau_nombres_premiers=$_____PNiveauNP                                                                   \
$Z                            niveau_nombres_premiers_jumeaux_1=$_____PNiveauNPJ1                                                       \
$Z                            niveau_nombres_premiers_jumeaux_2=$_____PNiveauNPJ2                                                       \
$Z                            R=$xTV/PRIM.11                                                                                            \
$Z                                                                              $formatI
$Z        $xci/format.01$X                                                                                                              \
$Z                            A=$xTV/PRIM.11                                                                                            \
$Z                                                                              $formatI                                                \
$Z                            mode=0                                                                                                    \
$Z                            R=$xTV/PRIM.12                                                                                            \
$Z                                                                              $sformatIR

$Z        RformatI

$Z        set                 K_KX_KY=`calculI sqrt($FaCtEuR)`
$Z                                      # Pourquoi faut-il que (le 20150401155810) :                                                  #
$Z                                      #                                                                                             #
$Z                                      #                              2                                                              #
$Z                                      #                   FaCtEuR = K                                                               #
$Z                                      #                                                                                             #
$Z                                      # En fait tout vient evidemment des definitions de 'v $xiii/vecteurs$DEF' et de               #
$Z                                      # 'v $xiii/vecteurs$FON'. De facon symbolique, on a par exemple :                             #
$Z                                      #                                                                                             #
$Z                                      #                   g2 = FgM2 = M2 = MOVE(___ZERO,PLUS__I,___ZERO) = MOVE(0,1,0)              #
$Z                                      #                                                                                             #
$Z                                      # En notant {Cx,Cy,Cz} les coordonnees du curseur, ce qui precede equivaut a (en supposant    #
$Z                                      # que la transformation geometrique est l'unite) :                                            #
$Z                                      #                                                                                             #
$Z                                      #         [1]       Cx = Cx + DELTA_AXE(KX) = Cx + (K.KX.1)                                   #
$Z                                      #                                                                                             #
$Z                                      # Ensuite, dans 'v $xci/spirale.21$K', apres un deplacement tel 'g2' il y a un 'FgXADDI()'.   #
$Z                                      # Or :                                                                                        #
$Z                                      #                                                                                             #
$Z                                      #                   FgXADDI = XADDI                                                           #
$Z                                      #                                                                                             #
$Z                                      # soit :                                                                                      #
$Z                                      #                                                                                             #
$Z                                      #                   KX = KX + K                                                               #
$Z                                      #                   --   ------                                                               #
$Z                                      #                   ||     ||                                                                 #
$Z                                      #                   ||     ||                                                                 #
$Z                                      #                   ||      ----------------------------------------------------              #
$Z                                      #                   ||                                                          |             #
$Z                                      #                    ---------------------------------------                    |             #
$Z                                      #                                                           |                   |             #
$Z                                      # ce qui va donc donner lors du deplacement suivant :       |                   |             #
$Z                                      #                                                           |                   |             #
$Z                                      #                                        -------------------                    |             #
$Z                                      #                                       ||                                      |             #
$Z                                      #                                       ||                ----------------------              #
$Z                                      #                                       ||               ||                                   #
$Z                                      #                                       ||               ||                                   #
$Z                                      #                                       --             ------                                 #
$Z                                      #         [2]       Cx = Cx + DELTA_AXE(KX) = Cx + (K.(KX + K).1)                             #
$Z                                      #                                           = Cx + K.KX + K.K                                 #
$Z                                      #                                                         ---                                 #
$Z                                      #                                                                                             #
$Z                                      # La difference de deplacement entre [2] et [1] fait bien apparaitre K.K, soit le carre de K. #

$Z        set                 VaLiDe=`calculINS $K_KX_KY*$K_KX_KY`

$Z        if                  ($VaLiDe != $FaCtEuR) then
$Z                            EROR                "Le facteur ($FaCtEuR) n'est pas un carre parfait."
$Z        else
$Z        endif

$Z        set                 DiMXY=`$xcg/MAX2.01$X x=$dimX y=$dimY`

$Z        set                 XCeNtReB=`calculINS ((($Xmax-$Xmin)/2)+($FaCtEuR/2))+$Xmin`
$Z        set                 YCeNtReB=`calculINS ((($Ymax-$Ymin)/2)+($FaCtEuR/2))+$Ymin`

$Z        set                 LInCrEmEnT=(0 1)

$Z        $xci/neutre$X                                                                                                                 \
$Z                            A=$xTV/PRIM.12                                                                                            \
$Z                            R=$_____ImageR                                                                                            \
$Z                                                                              $formatI

$Z        set                 NoMbRe=`calculI (($DiMXY/$FaCtEuR)/2)+2`

$Z        foreach             InCrEmEnTX ($LInCrEmEnT)
$Z                            @                   XCeNtRe = $XCeNtReB + $InCrEmEnTX
$Z                            foreach             InCrEmEnTY ($LInCrEmEnT)
$Z                                                @                   YCeNtRe = $YCeNtReB + $InCrEmEnTY
$Z                                                $xci/spirale.21$X                                                                     \
$Z                                                                    A=$_____ImageR                                                    \
$Z                                                                    X_centre=$XCeNtRe                                                 \
$Z                                                                    Y_centre=$YCeNtRe                                                 \
$Z                                                                    K=$K_KX_KY                                                        \
$Z                                                                    KX=$K_KX_KY KY=$K_KX_KY                                           \
$Z                                                                    niveau_spirale=$_____PNiveauS                                     \
$Z                                                                    nombre_tours=$NoMbRe                                              \
$Z                                                                    R=$_____ImageR                                                    \
$Z                                                                                                                      $formatI
$Z                            end
$Z        end



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.