Exercices Python sur la numération

Exercice (chiffres dans une base donnée)

  1. Écrire une fonction chiffres(n,b) qui renvoie la liste des chiffres de l’entier n≥0 en base b≥2 (ordonnée dans l’ordre des puissances décroissantes de b). Par défaut b=10.
  2. Écrire une fonction chiffres_cr(n,b) qui renvoie la liste des chiffres de l’entier n≥0 en base b≥2 (ordonnée dans l’ordre des puissances croissantes de b). Par défaut b=10.
  3. Écrire une fonction nombre(L,b) qui, à partir de la liste L des chiffres d’un entier n en base b (dans l’ordre des puissances décroissantes de b) renvoie l’entier n. Par défaut b=10.
  4. Plus difficile : écrire une fonction récursive nombres_rec(L,b) de la fonction précédente.

Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice (entiers palindromiques)
On dit qu’un entier {n\ge0} est un palindrome en base {b}, si la représentation de {n} en base {b} se lit à l’identique de gauche à droite ou de droite à gauche. Par exemple : {n = 178496694871} est un palindrome en base 10.

  1. Écrire une fonction estunpal prenant en argument un entier n et une base b (facultative, par défaut b = 10) et répondant True ou False suivant que n est (ou n’est pas) un palindrome en base b.
    Indication : utiliser la fonction chiffres de l’exercice précédent.
  2. Combien y a-t-il de palindromes (en base 10) dans l’intervalle [1, 1000000]?
  3. Trouver les entiers {n\lt 10^6} qui ne sont pas palindromiques mais dont le carré est palindromique (tout ça en base 10). Par exemple 836 en fait partie car 8362 = 698896 est palindromique.
  4. Déterminer le plus petit nombre non palindromique dont le cube est palindromique (en base 10).

Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice (entiers brésiliens)
On dit qu’un entier {n} est brésilien en base {b} si tous ses chiffres sont égaux dans cette base de numération. On suppose {1 < b < n-1} (car on a toujours {n = \overline{11}} en base {b = n-1}, et si {b\ge n} l’entier {n} se réduirait au seul chiffre {n}).
Montrer que l’entier 80 est cinq fois brésilien (c’est-à-dire dans cinq bases de numération différentes).
On trouvera ici un article approfondi sur les nombres brésiliens.
On utilisera la fonction chiffres de l’exercice 1.
Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez : 

Exercice (suites de Kaprekar)
Soit {u} dans {\mathbb{N}}. Soit {d} (resp. {c}) l’entier formé des chiffres dans l’ordre décroissant (resp. croissant) de {u}. On pose {K_{b}(u) = d-c}. On va vérifier quelques propriétés de la suite définie par la donnée de {u_0} et par la relation {u_{n+1}=K_{b}(un)}.

Par exemple, avec {b=10} et {u_0=4193}, on a {\begin{cases}d_0=9431\\ c_0=1349\end{cases}} donc {u_1=8062}.
Ainsi {\begin{cases}d_1=8820\\ c_0=0288\end{cases}} donc {u_2=8532}, puis {\begin{cases}d_2=8532\\ c_2=2358\end{cases}} donc {u_3=6174}.

Ensuite, on vérifie que {K_{10}(6174) = 6174} : la suite {(u_n)} stationne donc en 6174.

  1. Montrer que, pour {u_{0}\in\mathbb{N}} et {b\ge2}, il existe un {p} minimum et un {m\gt p} minimum tels que {u_{m}=u_{p}}.
    À partir de {p}, la suite {(u_{n})} boucle donc sur la liste {[u_{p},u_{p+1},\ldots,u_{m-1}]} (appelé le cycle de {u_{0}}).
    Bien sûr, si {m=p+1}, la suite {(u_{n})} est constante à partir du rang {p} (le cycle se réduisant alors à la valeur {u_{p}}).
  2. Écrire une fonction suivant passant de {u_{n}} à {u_{n+1}} en base {b} (par défaut {b=10}, et on affichera les {u_{n}} en base 10).
    On utilisera les fonctions chiffres et nombre de l’exercice 1.
  3. Écrire une fonction cycle d’arguments {u_{n}} et {b} (par défaut {b=10}) et renvoyant le couple formé par le nombre {d} de valeurs avant d’atteindre le cycle, et enfin ce cycle (sous forme d’un tuple trié commençant par la valeur minimum). Par exemple cycle(1574) renvoie le couple (7,[6174]).
  4. Explorer la situation en base {10}, quand {u_{0}} possède exactement quatre chiffres.
  5. Explorer la situation en base {10}, quand {u_{0}} possède exactement cinq chiffres.
  6. Explorer la situtation en base {2}, quand {u_{0}} possède exactement onze chiffres.
  7. Explorer la situtation en base {16}, quand {u_{0}} possède exactement quatre chiffres.

Cliquer ici pour voir (ou cacher) le corrigé
  Pour voir ce contenu, vous devez :