Institut supérieur de gestion Bizerte
Algorithmique et structures de données I
Série d’exercices N°5 : Les structures itératives (2)
Exercice N°1 :
Ecrire un algorithme qui permet de saisir des entiers strictement positifs dans un ordre croissant
c'est-à-dire une valeur n’est acceptée que si elle est strictement supérieure à la valeur précédente
déjà acceptée. La saisie s’arrête quand l’utilisateur saisit la valeur 0 et l’algorithme affichera le
nombre de valeurs prises en compte.
Exercice N°2 :
Ecrire un algorithme qui affiche la somme de deux temps valides (en heure/minute) saisis par
l’utilisateur.
Exercice N°3 :
Ecrire un programme qui permet de saisir deux entiers strictement positifs et de dire s’ils sont
amiables. Deux entiers m et n sont dits nombres amiables si et seulement si :
• la somme des diviseurs de m sauf lui-même est égale à n
• la somme des diviseurs de n sauf lui-même est égale à m.
Au cours de la recherche des diviseurs d’un des entiers, si la somme des diviseurs dépasse la
valeur de l’autre entier, la recherche s’arrête.
Exemple : 284 et 220 sont des nombres amiables
284 = 1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 (la somme des diviseurs de 220),
220 = 1 + 2 + 4 + 71 + 142 (la somme des diviseurs de 284).
Exercice N°4 :
Ecrire un algorithme qui permet de chercher et d’afficher les entiers dans un intervalle [m,n]
admettant le plus grand nombre de diviseurs. Les entiers m et n doivent vérifier la condition
suivante : 5<=m<n<=100.
Exemple : Pour m= 5 et n=10
Entier à comme nombre de diviseurs
5 2
6 4
7 2
8 4
9 3
10 4
L’algorithme affichera : les entiers admettant le plus grand nombre de diviseurs 4 sont : 6, 8,
10.
Exercice N°5 :
Ecrire un programme qui permet de saisir un nombre positif ab composé de deux chiffres
différents et d’afficher sa liste vers 9. Pour ce faire, nous calculons la valeur absolue de la
différence entre ab et son symétrique ba et le résultat subit le même processus. Nous répétons
le même traitement jusqu’à obtenir une différence égale à 9. L’ensemble constitué par le
1
nombre ab et les différences calculées est appelé liste vers 9.
Exemple : ab = 58
|58-85| = 27,
|27-72| = 45,
|45-54| = 9.
La liste vers 9 est : 58, 27, 45, 9.
Exercice N°6 :
Ecrire un algorithme qui permet de saisir un entier n strictement supérieur à 1 et d’afficher sa
suite aliquote. Une suite aliquote est une suite d'entiers dans laquelle chaque nombre est la
somme des diviseurs propres de son prédécesseur. Quand la suite atteint 1, elle s'arrête car 1 ne
possède pas de diviseur propre.
Exemple : n = 10
Les diviseurs propres de 10 sont 1, 2 et 5 et leur somme est égale à 8.
Les diviseurs propres de 8 sont 1, 2 et 4 et leur somme est égale à 7.
Le seul diviseur propre de 7 est 1.
La suite aliquote de 10 est 8, 7, 1.
Exercice N°7 :
Ecrire un programme qui permet de saisir un entier strictement positif et de dire s’il est heureux
ou non. Pour ce faire, nous allons calculer la somme des carrés de chacun de ses chiffres et le
résultat subit le même processus. Ensuite, nous répétons le même traitement jusqu’à obtenir un
seul chiffre. Si ce dernier est égal à 1, l’entier saisi est un nombre heureux et l’algorithme
affichera l’ordre de ce nombre (nombre de répétitions du processus).
Exemple : 70 est un nombre heureux et son ordre est 5
72 + 02 = 49,
42 + 92 = 97,
92 + 72 = 130,
12 + 32 + 02 = 10,
12 + 02 = 1.
Exercice N°8 :
Écrire un programme permettant de multiplier deux entiers strictement positifs A et B en
utilisant la méthode de la multiplication russe. La multiplication russe est une méthode
particulière permettant de multiplier deux entiers strictement positifs en utilisant la division
entière par 2, la multiplication par 2 et l’addition. Voici comment on procède. Soient A et B
deux entiers strictement positifs.
La méthode consiste à mettre A dans une première colonne et B dans une deuxième colonne. Il
s'agit ensuite de répéter les deux opérations suivantes :
• Division de la dernière valeur de la colonne A par 2,
• Multiplication de la dernière valeur de la colonne B par 2 et ce jusqu’à atteindre la valeur 1
dans la première colonne.
Le résultat de la multiplication de A par B s’obtient en additionnant les nombres de la 2ème
colonne qui sont en face de nombres impairs dans la 1ère colonne. Les nombres de la seconde
colonne qui sont en face de nombres pairs seront ignorés.
Exemple 1 Exemple 2
AB AB
9 11 12 5 (ignoré car 12 est pair)
4 22 (ignoré car 4 est pair) 6 10 (ignoré car 6 est pair)
2 44 (ignoré car 2 est pair) 3 20
1 88 1 40
9 * 11 = 11+88 =99 12 * 5 = 20 + 40 = 60
2
Exercice N°9 :
Ecrire un algorithme mettant en œuvre le jeu suivant : Le premier utilisateur saisit un entier
entre 0 et 10 que le second doit deviner. Dès que l’utilisateur saisit le bon nombre, un message
est affiché félicitant le joueur. Sinon le programme lui indique que l’entier qu’il a saisi est plus
grand ou plus petit et lui demande de redonner un nombre. L’utilisateur peut avoir au maximum
3 chances si au bout desquelles il ne donne pas le bon nombre, le programme est arrêté et un
message d’échec est affiché pour l’utilisateur. Un score indiquant le nombre de coups joués est
mis à jour et affiché lorsque l’entier est trouvé.