'8': 8,
'9': 9
}
Un dictionnaire est une table qui associe . . . des valeurs à un ensemble de clés. Dans la définition
ci-dessus on associe 0à la clé ’0’, . . . , 9à la clé ’9’. Si dest un dictionnaire et cune clé du
dictionnaire, alors d[c]désigne la valeur associée à la clé et l’instruction d[c] = wremplace
cette valeur par w. Autrement dit, les dictionnaires sont une généralisation des tableaux où les
indices ne sont pas nécessairement des entiers. Le tableau ci-dessus nous permet d’écrire une
fonction transformant un caractère l’entier qu’il désigne :
def valeur_chiffre_decimal(c):
"""Retourne l'entier représentant la valeur du chiffre c,
où c est un caractère."""
return chiffres_decimaux[c]
1. Écrire une fonction valeur_decimale(s)prenant en argument une chaîne de caractères
set retournant sa valeur.
2. Écrire une fonction representation_decimale(n)prenant en argument un entier net
retournant sa représentation en base 10 sous forme d’une chaîne de caractères.
3. Écrire une fonction valeur_hexadecimale(s)prenant en argument une chaîne de carac-
tères sreprésentant un nombre en hexadécimal et retournant sa valeur en décimal.
4. Écrire une fonction representation_hexadecimale(n)prenant en argument un entier
net retournant sa représentation en hexadécimal sous forme d’une chaîne de caractères.
5. Écrire une fonction valeur_binaire(s)prenant en argument une chaîne de caractères s
représentant un nombre en binaire et retournant sa valeur en décimal.
6. Écrire une fonction representation_binaire(n)prenant en argument un entier net
retournant sa représentation en binaire sous forme d’une chaîne de caractères.
2 Un grand entier
Les nombres premiers de Mersenne sont des nombres premiers de la forme 2p−1. On sait à
l’heure actuelle que 257885161
−1est un nombre premier de Mersenne.
1. Écrire une fonction nb_chiffres_bin_mersenne(p) retournant le nombre de chiffres dans
la représentation en base 2de 2p−1. On veut que cette fonction marche et retourne un
résultat en temps raisonnable (inférieur à 10 secondes) pour des valeurs de pallant jusqu’à
1013.
2. Écrire une fonction nb_chiffres_mersenne(p) retournant le nombre de chiffres dans la
représentation en base 10 de 2p−1. On veut que cette fonction marche et retourne un
résultat en temps raisonnable (inférieur à 10 secondes) pour des valeurs de pallant jusqu’à
1013.
3. Dans cette question, on s’intéresse aux fonctions repr_bin_mersenne(p) et repr_dec_mersenne(p)
retournant sous forme de chaîne de caractères la représentation repectivement en bases
2et 10 de 2p−1. Écrire l’une de ces fonctions de façon à ce qu’elle retourne un résultat
en temps raisonnable (inférieur à 10 secondes) pour des valeurs de pallant jusqu’à 108.
Attention : mieux vaut bien choisir la fonction que vous implanterez : l’une s’écrit sans
difficulté, l’autre est théoriquement possible mais demande plusieurs heures de travail.
2