Nombre heureux

Contexte

Un entier naturel est un nombre heureux si, lorsqu’on calcule la somme des carrés de ses chiffres dans son écriture en base 10 puis la somme des carrés des chiffres du nombre obtenu et ainsi de suite, on aboutit au nombre 1.

Par exemple, le nombre 7 est heureux, puisque sa suite associée est :

Environnement de travail

Pour cet exercice, vous devez utiliser en priorité le fichier squelette ex06-happy-number.py. IMPORTANT : Enregistrez le avec Right Click + Save Link As... pour conserver l’encodage.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Objectifs

L’objectif est d’écrire une fonction is_happy() :

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour (les doctests de la fonction donnent des exemples d’appel et les valeurs de retour correspondantes).

Informations complémentaires

L’énoncé du problème invite à réfléchir à un algorithme récursif. Quelques questions à se poser :

Doctests

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, lancer les doctests dans un terminal:

$ python -m doctest ex06_happy.py -v 

La totalité des doctests doivent réussir.

Application

Afficher les nombres heureux jusqu’à 100.