Nombres premiers symétriques

nombres premiers symétriques

Nombres premiers symétriques

Nombres premiers symétriques: qu’est-ce que c’est ?

Je ne vais pas vous parler de nombres premiers palindromes (comme 131, qui est premier et qui se lit de droite à gauche comme de gauche à droite).

Regardons ça de plus près…

À l’origine des nombres premiers symétriques: The Big Bang Theory

Étant fan de cette série télévisée, il m’arrive de la regarder très souvent. Dans un épisode, l’un des personnages (Sheldon Cooper) mentionne ne fait que “73” est le meilleur nombre.

nombres premiers symétriques nombre 73 the big bang theory sheldon cooper

Je ne vais pas expliquer ici la justification donnée par le personnage; je vais juste me contenter de dire que parmi ces explications, le fait est que “73” et “37” sont deux nombres premiers et qu’ils sont symétriques l’un de l’autre.

Deux nombres premiers x et y seront considérés comme symétriques si:$$x=\sum_{k=0}^na_k10^k\quad\text{et}\quad y=\sum_{k=0}^na_{n-k}10^k.$$

Sont-ils nombreux ?

À vrai dire, c’est une question difficile. On sait que l’ensemble des nombres premiers comporte encore des zones sombres… Une première approche est de s’aider de Python.

Une fonction qui nous dit si un nombre est premier

La première chose à faire est d”écrire une fonction booléenne pour savoir si un nombre est premier ou pas. Pour se faire, je vais utiliser un résultats de mathématiques disant que si un nombre n n’admet aucun diviseur inférieur à sa racine carrée, alors il est premier.

def is_prime(n):
    for i in range(2,int(n**0.5)+1):
        if n%i == 0:
            return False
    
    return True

Dans cette fonction, je parcours tous les entiers i de 2 à la partie entière de \(\sqrt{n}\). Plutôt que d’importer la fonction sqrt du module math de Python, je préfère élever à l’exposant 0,5 car \(\sqrt{n}=n^{0,5}\).

Pour chacun de ces entiers, je regarde si n est divisible par i; si tel est le cas, alors le reste de la division euclidienne de n par i (donné par n%i) est nul. Dans ce cas, cela signifie que n n’est pas premier puisque divisible par un nombre entier autre que 1 et lui-même. La fonction retourne alors “False”.

Si on sort de la boucle, cela signifie qu’aucun entier inférieur à \(\sqrt{n}\) ne divise n, et donc que n est premier. La fonction renvoie alors “True”.

Une fonction qui liste les premiers nombres premiers symétriques

for k in range(11,1000):
    sym = int( str(k)[::-1] )
    if is_prime(k) and is_prime(sym):
        print('{} et {} sont premiers symétriques.'.format(k,sym))

Ce petit programme donne:

11 et 11 sont premiers symétriques.
13 et 31 sont premiers symétriques.
17 et 71 sont premiers symétriques.
31 et 13 sont premiers symétriques.
35 et 53 sont premiers symétriques.
37 et 73 sont premiers symétriques.
53 et 35 sont premiers symétriques.
71 et 17 sont premiers symétriques.
73 et 37 sont premiers symétriques.
79 et 97 sont premiers symétriques.
97 et 79 sont premiers symétriques.
101 et 101 sont premiers symétriques.
107 et 701 sont premiers symétriques.
113 et 311 sont premiers symétriques.
121 et 121 sont premiers symétriques.
131 et 131 sont premiers symétriques.
149 et 941 sont premiers symétriques.
151 et 151 sont premiers symétriques.
157 et 751 sont premiers symétriques.
163 et 361 sont premiers symétriques.
167 et 761 sont premiers symétriques.
169 et 961 sont premiers symétriques.
179 et 971 sont premiers symétriques.
181 et 181 sont premiers symétriques.
191 et 191 sont premiers symétriques.
199 et 991 sont premiers symétriques.
311 et 113 sont premiers symétriques.
313 et 313 sont premiers symétriques.
323 et 323 sont premiers symétriques.
337 et 733 sont premiers symétriques.
347 et 743 sont premiers symétriques.
353 et 353 sont premiers symétriques.
359 et 953 sont premiers symétriques.
361 et 163 sont premiers symétriques.
373 et 373 sont premiers symétriques.
383 et 383 sont premiers symétriques.
389 et 983 sont premiers symétriques.
701 et 107 sont premiers symétriques.
709 et 907 sont premiers symétriques.
727 et 727 sont premiers symétriques.
733 et 337 sont premiers symétriques.
739 et 937 sont premiers symétriques.
743 et 347 sont premiers symétriques.
751 et 157 sont premiers symétriques.
757 et 757 sont premiers symétriques.
761 et 167 sont premiers symétriques.
769 et 967 sont premiers symétriques.
787 et 787 sont premiers symétriques.
797 et 797 sont premiers symétriques.
907 et 709 sont premiers symétriques.
919 et 919 sont premiers symétriques.
929 et 929 sont premiers symétriques.
937 et 739 sont premiers symétriques.
941 et 149 sont premiers symétriques.
953 et 359 sont premiers symétriques.
961 et 169 sont premiers symétriques.
967 et 769 sont premiers symétriques.
971 et 179 sont premiers symétriques.
983 et 389 sont premiers symétriques.
991 et 199 sont premiers symétriques.

Nous avons donc une réponse à notre question: les nombres premiers symétriques ne sont pas si rares que ça…

Par soucis de “perfection”, je vais tout de même améliorer le code précédent en effaçant les doublons. On a alors le programme complet suivant:

def is_prime(n):
    for i in range(2,int(n**0.5)):
        if n%i == 0:
            return False
    
    return True

L = []
for k in range(11,1000):
    sym = int( str(k)[::-1] )
    if is_prime(k) and is_prime(sym):
        if sym < k:
            k, sym = sym, k
        if (k,sym) not in L:
            L.append( (k,sym) )
            
for e in L:
    print( e )
(11, 11)
(13, 31)
(17, 71)
(35, 53)
(37, 73)
(79, 97)
(101, 101)
(107, 701)
(113, 311)
(121, 121)
(131, 131)
(149, 941)
(151, 151)
(157, 751)
(163, 361)
(167, 761)
(169, 961)
(179, 971)
(181, 181)
(191, 191)
(199, 991)
(313, 313)
(323, 323)
(337, 733)
(347, 743)
(353, 353)
(359, 953)
(373, 373)
(383, 383)
(389, 983)
(709, 907)
(727, 727)
(739, 937)
(757, 757)
(769, 967)
(787, 787)
(797, 797)
(919, 919)
(929, 929)

Vous pouvez constater que je n’ai pas pris en compte les nombres inférieurs à 10, bien qu’ils soient aussi premiers symétriques.

On peut aussi remarquer que parmi les nombres premiers symétriques, il y a beaucoup de palindromes (929, 919, 787,…): un peu plus de 46 %…

Si on avait continué jusqu’à :

  • 10000, il n’y en aurait eu que 12,33 %;
  • 100000, il n’y en aurait eu que 11,96 %;
  • 1000000, il n’y en aurait eu que 1,986 %: là, ça baisse considérablement. Pour information, il y a 5740 premiers symétriques inférieurs à 1000000.

Je conjecture donc qu’à l’instar de l’ensemble des nombres premiers, celui des premiers symétriques est infini.

S’il est aisé de démontrer que le premier ensemble est infini (vous pouvez lire cet article fort intéressant), il n’en est sans doute pas la même chose pour le second.

Réflexions diverses

Je note \(\mathbb{S}_\mathbb{P}\) l’ensemble des premiers symétriques.

L’ensemble n’est pas un groupe

Quelle que soit l’opération que l’on décide d’attribuer à l’ensemble \(\mathbb{S}_\mathbb{P}\), addition ou multiplication, ce n’est pas un groupe.

En effet, 14447 et 74441 appartiennent à \(\mathbb{S}_\mathbb{P}\), mis leur somme (88888) n’est pas un nombre premier donc n’appartient pas à l’ensemble.

De même, leur produit 1075449127 n’est pas un nombre premier.

Quel genre de raisonnement ?

La difficulté majeure pour démontrer la conjecture (ou au contraire la réfuter) est qu’il est difficile d’exprimer le symétrique d’un nombre premier quelconque. Dans la démonstration d’Euclide sur l’infinitude de l’ensemble des nombres premiers, on pouvait partir du fait que le produit de nombres premiers augmenté de 1 est aussi premier. Mais \(\mathbb{S}_\mathbb{P}\) a une structure plus complexe. C’est certes un sous-ensemble de \(\mathbb{P}\), mais cela ne nous aide pas.

Avez-vous une idée ?

Stéphane Pasquet
Stéphane Pasquet

Laissez votre message