Exercice 30
Un nombre entier est dit de harshad, s'il est divisible par la somme de ses chiffres. Exemple n = 21 est un nombre de harshad car il est divisible par 1+2=3 tandis que n=19 il ne l'est pas puis qu'il n'est pas divisible par la somme 1+9=10. Ecrire un programme en Python sous forme de fonction nommée est_harshad(n) qui prend en argument un nombre entier n et vérifie s'il est un nombre de Harshad par deux méthodes différentes: l'une en utilisant la fonction prédéfinie str() et l'autre sans utiliser cette fonction
Solution
Méthode 1 : (avec str())
Dans cette méthode nous allons suivre les étapes suivantes:
- Convertir le nombre en chaîne.
- Parcourir chaque caractère.
- Convertir chaque caractère en entier.
- Calculer la somme.
- Vérifier la divisibilité.
Code explicite
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
def est_harshad_str(n): # Conversion du nombre en chaîne de caractères chaine = str(n) # Calcul explicite de la somme des chiffres somme = 0 for caractere in chaine: chiffre = int(caractere) somme = somme + chiffre # Vérification de la divisibilité if n % somme == 0: return True else: return False # Exemple d’usage print(est_harshad(24)) # True print(est_harshad(33)) # False |
Méthode 2 : (sans str()), uniquement avec l’arithmétique
Dans cette deuxième méthode nous allons omettre la fonction str() et utiliser uniquement les procédures arithmétiques:
- Extraire le dernier chiffre par n % 10
- Ajouter au total.
- Supprimer le dernier chiffre avec n // 10
- Répéter jusqu’à ce qu’il n’y ait plus de chiffre.
- Vérifier la divisibilité.
Code explicite
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def est_harshad_arith(n): temp = n somme = 0 # Extraction arithmétique des chiffres while temp > 0: dernier_chiffre = temp % 10 somme = somme + dernier_chiffre temp = temp // 10 # Vérification de la divisibilité if n % somme == 0: return True else: return False # Exemple d’usage print(est_harshad(21)) # True print(est_harshad(19)) # False |
Younes Derfoufi
CRMEF OUJDA
-

Hub USB 3.0 OBERSTER Multiport
€ 7,00 Acheter le produit -
Promo !

Routeur WiFi AX 3000 Mbps TP-Link Routeur, WiFi 6, 4 antennes à haute performance, OneMesh, WPA3
Le prix initial était : € 99,00.€ 56,00Le prix actuel est : € 56,00. Acheter le produit -

POO: Cours et exercices en UML2, Python, PHP, C#, C++ et Java (French Edition)
€ 17,00 Achetez le livre
