• Bonne Première Année !

     

    Nous allons tenter ici de fabriquer des nombres premiers, simplement avec des observations et des corrélations, qui ne trouvent pas de contre-preuves pour l'instant.

     

    Nous appellerons ici "Base d'un nombre" uniquement l'unité de chaque nombre Entier, converti dans n'importe quelle Base numérique.

    Par exemple, 14 en Base 5 donnera 24, dont nous garderons l'unité, qui est 4.

     

    TABLE DE DÉCOMPOSITION DES NOMBRES DANS TOUTES LES BASES

    Table des bases des nombres

     

    Nous utiliserons donc la fonction Modulo pour convertir les nombres dans les diverses Bases qui nous intéressent.

    Nous ignorerons volontairement toute valeur supérieure au nombre, bornant ainsi sa liste de Bases entre lui et un.

    7 en Base 7 vaut 0

    7 en Base 6 vaut 1

    7 en Base 5 vaut 2

    7 en Base 4 vaut 3

    7 en Base 3 vaut 1

    7 en Base 2 vaut 1

    7 en Base 1 vaut 0

    7 est donc égal à la série 0, 1, 2, 3, 1, 1, 0.

     

    Pour un nombre non premier à l'horizontale sur le tableau, il y a plus de deux zéros dans la table, sur la ligne correspondante.

    12 est donc égal à la série 0, 1, 2, 3, 4, 5, 6, 2, 0, 0, 0, 0

     

    Nous affirmerons aussi que si le nombre de zéro est pair, les valeurs verticales correspondantes sont "facteurs par paires", deux par deux, et que si leur nombre est impair, l'un d'entre eux est "facteur de lui-même".

    9 étant égal à la série 0, 1, 2, 3, 4, 1, 0, 1, 0, nous retrouvons ici, à l'aide des zéros, les possibilités de multiplications qui permettent de retrouver 9, qui sont 9 x 1, puis en sont centre 3 x 3, facteur de lui-même.

    15 étant égal à la série 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 3, 0, 1, 0, nous retrouvons ici, à l'aide des zéros, les possibilités de multiplications qui permettent de retrouver 15, qui sont 15 x 1, puis en sont centre 5 x 3.

     

    J'affirmerai aussi que la moitié des zéros ; ceux qui sont à droite de la suite correspondant à tout nombre n; sont situés sous la barre de Sqr( n ).

    Nous les appellerons "Bases factrices minimales".

    Ainsi, pour savoir si n est premier, pour l'instant, il suffit de vérifier si Mod(n, 2) = 0, Mod(n, 3) = 0, [...], Mod(n, Floor( Sqr( n ) ) ) = 0.

    (Sqr est un terme informatique qui veut dire Racine Carrée, tandis que Floor veut dire arrondi en dessous, Ceil veut dire arrondi au dessus, et Mod est la fonction Modulo)

      

    L'intérêt de savoir ceci est d'en arriver à fabriquer les nombres de Mersenne rapidement, ou mieux encore. Nous allons tenter petit à petit de montrer comment générer des premiers.

     

    Observations sur les listes de Bases :

    101 est donc égal à la série 0   1   2   3   4   5   6   7   8   9   10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  1   3   5   7   9   11  13  15  17  19  21  23  25  27  29  31  33  2   5   8   11  14  17  20  23  1   5   9   13  17  1   6   11  16  5   11  3   10  5   2   1   2   5   3   5   1   1   2   1   0

    Soit une série (en rouge) allant 1 à 50 avec une incrémentation de 1,

    une série (en orange) allant de 1 à 33 avec une incrémentation de 2,

    une série (en jaune) allant de 2 à 23 avec une incrémentation de 3,

    une série (en vert) allant de 1 à 17 avec une incrémentation de 4,

    une série (en bleu) allant de 1 à 16 avec une incrémentation de 5,

    une série (en violet) allant de 5 à 11 avec une incrémentation de 6,

    Etc.

     

    Il devient donc aisé, avec ceci, de trouver comment générer sans limite n'importe quel nombre premier, si l'on observe que ceux-ci n'ont un zéro qu'au début et à la fin de leur suite.

     

    Liste de vos aides :

    Pour retrouver les valeurs MIN et MAX des séries, voici une première piste.

    1. Soit n un nombre premier, les valeurs MAX que l'on trouve dans ses suites sont associées aux rangs : CEIL( n/2 ), CEIL( n/3 ), [...], CEIL( n/x ) = 2.       Par exemple, si n = 7, on a pour rangs : CEIL( 7/2 ) = 4,  CEIL( 7/3 ) = 3, CEIL( 7/4 ) = 2.       Nos trois valeurs MAX sont donc égales à Mod(7, 4), Mod(7, 3), Mod(7, 2).       Nous pouvons ainsi savoir que 7 est formé de trois des suites précédemment citées.
    2. Soit n un nombre premier, les valeurs MIN que l'on trouve dans ses suites sont presque toutes visibles dans ce que l'on appellera des "Bases factrices" du nombre précédant dans le tableau. Tous les zéros sur chaque ligne du tableau de Base inclue entre n et 2 sont des "Bases factrices". Par exemple, 6 à pour Bases factrices les rangs 6, 3 et 2. Pour n = 7, les rangs MIN sont donc 6, 3, 2, tels que Mod(7, 6) = 1, Mod(7, 3) = 1, Mod(7, 2) = 1.
    3. On sait ainsi que 7 est fait d'au moins trois suites, allant de Mod(7, 6) à Mod(7, 4), de Mod(7, 3) à Mod(7, 3), et de Mod(7, 2) à Mod(7, 2). On retrouve, ici, effectivement, les suites 1 à 3, 1 à 1 et 1 à 1.

     

    Exemple, pour 101, voici ce que l'on trouve :

    Rangs MAX de 101 : Mod(101, 51), Mod(101, 34), Mod(101, 26), Mod(101, 21), Mod(101, 17), Mod(101, 15), Mod(101, 13), Mod(101, 12), Mod(101, 11), Mod(101, 10), Mod(101, 9), Mod(101, 8), Mod(101, 8), Mod(101, 7), Mod(101, 7), Mod(101, 6), Mod(101, 6), Mod(101, 6), Mod(101, 6), Mod(101, 6), Mod(101, 5), Mod(101, 5), Mod(101, 5), Mod(101, 5), Mod(101, 5), Mod(101, 4), Mod(101, 4), Mod(101, 4), Mod(101, 4), Mod(101, 4), Mod(101, 4), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 3), Mod(101, 2)

    Cela fait 18 suites.

    Rangs MIN de 101 : En observant le nombre pair précédant ; qui est 100 ; et ses "Bases factrices" { 100, 50, 25, 20, 10, 5, 4, 2 }, on obtient les valeurs MIN de quelques une des suites. (Uniquement celles commençant par la valeur 1) Cela veut dire que Mod(101, 100) = Mod(101, 50) = Mod(101, 25) = Mod(101, 20) = Mod(101, 10) = Mod(101, 5) = Mod(101, 4) = Mod(101, 2) = 1. Il nous manque les Rangs MIN de 101 commençant par une valeur supérieure à 1 pour commencer à envisager de générer des nombres Premiers.

     

    Nous pouvons déjà affirmer que pour tout nombre n, pour m le nombre pair qui le précède tel que m = n - 1, et r la racine carrée arrondie en dessous de n, alors :

    La liste des Bases factrices de m permet déjà de prédire, pour certains nombres, si n est premier.

    Prenons un exemple et un contre-exemple :

    • Exemple : 12 ayant pour Bases factrices 12, 6, 4, 3, 2, 1, implique que 13 n'est pas divisible par 12, 6, 4, 3, 2. En prenant la racine carrée (arrondie en dessous) de 13, nous obtenons 3. Nous savons donc que 13 est premier, car 12 a pour Bases factrices 2 et 3.
    • Contre-Exemple : 14 ayant pour Bases factrices 14, 7, 2, 1, implique que 15 n'est pas divisible par 14, 7, 2. En prenant la racine carrée (arrondie en dessous) de 15, nous obtenons 3. Nous savons donc que 15 n'est pas forcément premier, car 14 a pour Bases factrices 2, mais pas 3.

     

    Nous pouvons ainsi déjà fabriquer des nombres premiers à l'aide de suites !

     

    Soit la suite 1,2,3,4,5,6,7,[...], X.

    Pour retrouver le nombre pair qui lui correspond, nous savons que :

    1 x n = 2 x n1 = 3 x n2 = 4 x n3 = 5 x n4 = 6 x n5 = 7 x n6 = [...] = X x n(X-1)

    Nous pouvons affirmer qu'il existe des nombres premiers p tels que (p - 1) / X! est un nombre Entier, et qu'il existe des Y = (p - 1) / X! tels que (X! * Y) + 1 est premier.

     

    Exemples :

    (10! * 3) + 1 = 10886401 (premier)

    (10! * 5) + 1 = 18144001 (premier)

    (10! * 8) + 1 = 29030401 (premier)

    (10! * 9) + 1 = 32659201 (premier)

    [...]

    (12! * 2) + 1 = 958003201 (premier)

    Etc.

     

    Le 1er Générateur de premiers "de Vignoli" :

    On peut donc générer des premiers de Vignoli assez facilement, au petit bonheur la chance, de la manière suivante.

    n est parfois premier si n = (a . x!) + 1.

     

    Calculatrice scientifique online :

    https://www.mathematiquesfaciles.com/outils/calculatrice-scientifique-2.php

    Test de primalité online :

    https://www.dcode.fr/test-primalite

     

    On doit pouvoir en déduire aussi que connaitre les Bases factrices des nombres pairs et impairs environnant un nombre permettent de savoir s'il est premier.

     

    Voici une grande liste de premiers pour faire des tests :

    http://compoasso.free.fr/primelistweb/page/prime/liste_online.php

     

    Prochaines étapes :

    - Découvrir comment ne générer que des premiers de Vignoli

    - Essayer de découvrir comment ne générer que des premiers de Mersenne/Vignoli

     

    @suivre !!

     

    Allez, à vous d'achever l'oeuvre de Dieu et de l'Agneau, peuple de Dieu !

    (Petites poules rousses, en action !)

     

    Code source PureBasic d'un simple calculateur de séries de ce genre :

    OpenWindow(1, 0, 0, 1000, 220, "Base List")

     

    StringGadget(1, 22, 22, 956, 25, "")

    EditorGadget(2, 22, 47, 956, 120)

    ButtonGadget(3, 22, 167, 66, 31, "CALC")

     

    Repeat

      

      ev = WaitWindowEvent()

      

      Select ev

        Case #PB_Event_CloseWindow

          Break

        Case #PB_Event_Gadget

          eg = EventGadget()

          Select eg

            Case 3

              n = Val(GetGadgetText(1))

              If n < 1 : n = 1 : EndIf

              SetGadgetText(1, Str(n))

              ClearGadgetItems(2)

              a$ = ""

              For i = n To 1 Step - 1

                v$ = Str(Mod(n, i))

                While Len(v$) < 3

                  v$ + " "

                Wend

                a$ + v$ + " "

              Next

              SetGadgetText(2, a$)

          EndSelect

      EndSelect

      

      Delay(1)

          

    ForEver

     

    CloseWindow(1)

    End

     

    Code source Générateur de nombres potentiellement premiers en PureBasic, basés sur les factorielles.

    OpenWindow(1, 0, 0, 1000, 220, "Gen Premiers")

     

    StringGadget(1, 22, 22, 456, 25, "10")

     

    StringGadget(2, 522, 22, 456, 25, "100")

     

    EditorGadget(3, 22, 47, 956, 120)

     

    ButtonGadget(4, 22, 167, 66, 31, "GEN")

     

     

     

    Repeat

     

      

     

      ev = WaitWindowEvent()

     

      

     

      Select ev

     

        Case #PB_Event_CloseWindow

     

          Break

     

        Case #PB_Event_Gadget

     

          eg = EventGadget()

     

          Select eg

     

            Case 4

              

              n = Val(GetGadgetText(1))

     

              If n < 1 : n = 1 : EndIf

     

              SetGadgetText(1, Str(n))

     

              n = Val(GetGadgetText(2))

     

              If n < 1 : n = 1 : EndIf

     

              SetGadgetText(2, Str(n))

              

              ClearGadgetItems(3)

              

              e = 1

              

              k = Val(GetGadgetText(1))

                

              For j = 2 To k

                  

                e * j

                  

              Next

              

              For i = 1 To Val(GetGadgetText(2))

                

                p = (e * i) + 1

                

                flag = #True

              

                For j = 2 To Int(Sqr(p))

                  

                  If Mod(p, j) = 0

                    

                    flag = #False

                    

                    Break

                    

                  EndIf

                  

                Next

                

                v$ = Str(p)

                

                pr$ = ""

                

                If flag = #True : pr$ = " (Premier)" : EndIf

     

                AddGadgetItem(3, -1, "( " + GetGadgetText(1) + "! x " + Str(i) + " ) + 1 = " + v$ + pr$)

                  

              Next

     

          EndSelect

     

      EndSelect

     

      Delay(1)

     

    ForEver

     

    CloseWindow(1)

     

    End

     

    « Ma vérité s'est-elle terminée ici ?Etrange »

    Tags Tags : , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :