Exercice 90
Nombres abondants
Définition : Un nombre abondant est un nombre entier positif n dont la somme de ses diviseurs propres (tous ses diviseurs sauf lui-même) est supérieure à n.
Exemples :
- 12 est abondant car 1+2+3+4+6 = 16 > 12
- 10 n'est pas abondant car 1+2+5 = 8 < 10
- 18 est abondant car 1+2+3+6+9 = 21 > 18
Questions :
- Écrire un programme en langage Python sous forme de fonction qui prend en entrée un entier n et renvoie True si n est abondant et False sinon.
- Écrire un algorithme en Python qui détermine la liste des diviseurs abondants d'un entier n.
- Écrire un algorithme en langage Python qui détermine la liste des nombres abondants compris entre 100 et 200.
Solution
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# 1) Fonction qui vérifie si un nombre est abondant def est_abondant(n): # Calcul de la somme des diviseurs propres somme_diviseurs = 0 for i in range(1, n): if n % i == 0: somme_diviseurs += i return somme_diviseurs > n # 2) Fonction qui détermine la liste des diviseurs abondants d'un entier n def diviseurs_abondants(n): diviseurs_abondants_liste = [] # Parcourir tous les diviseurs potentiels de n for i in range(1, n + 1): if n % i == 0: # i est un diviseur de n if est_abondant(i): # Vérifier si ce diviseur est abondant diviseurs_abondants_liste.append(i) return diviseurs_abondants_liste # 3) Fonction qui détermine la liste des nombres abondants entre 100 et 200 def nombres_abondants_100_200(): # Initialiser la liste des nombres abondants nombres_abondants_liste = [] for i in range(100, 201): # 201 est exclu, donc on va jusqu'à 200 inclus if est_abondant(i): nombres_abondants_liste.append(i) return nombres_abondants_liste # Test des algorithmes # Test de la fonction est_abondant print("Test de la fonction est_abondant:") print(f"12 est abondant ? {est_abondant(12)}") # True print(f"10 est abondant ? {est_abondant(10)}") # False print(f"18 est abondant ? {est_abondant(18)}") # True print() # Test de la fonction diviseurs_abondants print("\n Test de la fonction diviseurs_abondants:") n_test = 36 print(f"Diviseurs abondants de {n_test} : {diviseurs_abondants(n_test)}") print() # Test de la fonction nombres_abondants_100_200 print("\n Nombres abondants entre 100 et 200:") resultat = nombres_abondants_100_200() print(resultat) print(f"Total : {len(resultat)} nombres abondants trouvés") |
Output:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Test de la fonction est_abondant 12 est abondant ? True 10 est abondant ? False 18 est abondant ? True Test de la fonction diviseurs_abondants: Diviseurs abondants de 36 : [12, 18, 36] Nombres abondants entre 100 et 200: [100, 102, 104, 108, 112, 114, 120, 126, 132, 138, 140, 144, 150, 156, 160, 162, 168, 174, 176, 180, 186, 192, 196, 198, 200] Total : 25 nombres abondants trouvés |
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



