Bonjour,
Le théorème fondamental de l’arithmétique dit que tout entier naturel peut s’écrire comme un produit de nombres premiers, cette représentation étant unique si on ne se préoccupe pas de l’ordre des multiplications.
Ex :80 = 2*2*2*2*5
En partant de cela on peut écrire les entiers de manière très économe en symboles, voilà une méthode que je vous soumets.
On déduit du théorème fondamental que tout entier n peut s’écrire :
n = p1^a1 x p2^a2 x … pk^ak avec pi représentant le ième nombre premier, et les ai des exposants entier positifs ou nuls.
Ex : 80 = 2^4 x 3^0 x 5^1
On peut écrire les exposants de la même manière (récurrente) sous forme de produits de puissances de nombres premiers :
80 = 2^(2^(2^1)) x 3^0 x 5^1
Par convention je remplace dans l’expression tous les 1 par 1^0 :
80 = 2^(2^(2^(1^0))) x 3^0 x 5^(1^0)
Mon codage économe consiste à ne garder dans l’expression de droite que les parenthèses et les 0 :
80 s’écrit alors : (((0)))0(0)
J’appelle Primocode(n) la fonction qui a un entier positif n associe ce codage à base de parenthèses et de 0.
Le codage des entiers de 1 à 10 donne :
1 -> 0 ; 2 -> (0) ; 3 -> 0(0) ; 4 -> ; 5 -> 00(0) ; 6 -> (0)(0); 7 -> 000(0); 8 -> (0(0)) ; 9 -> 0((0)) : 10 -> (0)0(0)
J’ai fait un petit programme qui calcule Primocode(n) et la fonction inverse. Un avantage de ce codage est qu’il exhibe la structure interne de chaque nombre (ses facteurs premiers), et qu’il permet donc de faire assez facilement les opérations de multiplication et d’élévation à la puissance. Mais en revanche il n’est pas possible de réaliser facilement des additions à partir de primocodes.
Ma question : est-ce que vous savez si quelqu’un a déjà étudié une forme de représentation semblable des entiers ? Si vous avez des références cela m’intéresse.
Yves
-----