Sie sind auf Seite 1von 5

Master Sciences, Technologies, Sant

Mention Mathmatiques, spcialit Enseignement des mathmatiques


Algorithmique et graphes, thmes du second degr

Feuille TD n1 Exercices dalgorithmique
lments de correction


Exercice 1. Rsolution dune quation du 1
er
degr
crire un algorithme permettant de rsoudre une quation coefficients rels de la forme ax + b = 0
(a et b seront entrs au clavier).
Rponse. Lalgorithme est le suivant :
Algorithme equationPremierDegr Algorithme equationPremierDegr Algorithme equationPremierDegr Algorithme equationPremierDegr
# cet algorithme rsout une quation de la forme ax + b = 0
# a et b sont entrs au clavier.
variables a, b rels
dbut
# lecture donnes
!ntrer " a, b #
# rsolution de l$quation
# cas o% a = 0
si " a = 0 #
alors si " b = 0 #
alors Afficher " &'ous les rels sont solution& #
sinon Afficher " &Pas de solution& #
# cas o% a 0
sinon Afficher " (b ) a #
fin*si
fin
Exercice 2. Minimum de trois nombres
crire un algorithme permettant dafficher le plus petit de trois nombres entrs au clavier.
Rponse. Un algorithme possible est le suivant : si a est plus petit que b, il suffit de comparer a c
sinon, il faut comparer b c :
Algorithme minimum'rois+ombres Algorithme minimum'rois+ombres Algorithme minimum'rois+ombres Algorithme minimum'rois+ombres
# cet algorithme ,ermet d$afficher le ,lus ,etit de trois nombres
# entrs au clavier.
variables a, b, c entiers naturels
dbut
# lecture donnes
!ntrer " a, b, c #
# com,araisons
si " a - b #
alors si " a - c #
alors Afficher " a #
sinon Afficher " c #
fin*si
sinon si " b - c #
alors Afficher " b #
sinon Afficher " c #
fin*si
fin*si
fin
Exercice 3. Dure dun vol davion
crire un algorithme permettant de calculer la dure dun vol davion, connaissant lhoraire de dpart
(heures et minutes) et lhoraire darrive (heures et minutes), sans convertir les horaires en minutes.
On suppose que le vol dure moins de 24 heures.
Rponse. On effectue le calcul sans tenir compte des valeurs et on ajuste le cas chant.
Lalgorithme est alors le suivant :
Algorithme dure.olAvion/ans0onversion Algorithme dure.olAvion/ans0onversion Algorithme dure.olAvion/ans0onversion Algorithme dure.olAvion/ans0onversion
# cet algorithme ,ermet de calculer la dure d$un vol d$avion
# sans convertir les horaires de d,art et d$arrive en minutes.
variables h*de,art, m*de,art, h*arrivee, m*arrivee entiers naturels
h*duree, m*duree entiers naturels
dbut
# lecture donnes
!ntrer " h*de,art, m*de,art, h*arrivee, m*arrivee #
# calcul de la dure
h*duree h*arrivee 1 h*de,art
m*duree m*arrivee 1 m*de,art
# on rectifie les minutes si ncessaire
si " m*dure - 0 #
alors m*duree 20 + m*duree
h*duree = h*duree ( 3
fin*si
# on rectifie les heures si ncessaire
si " h*duree - 0 #
alors h*duree = 45 + h*duree
fin*si
# affichage rsultat
Afficher " h*duree, m*duree #
fin
Exercice 4. Lecture dalgorithme
Que fait lalgorithme suivant ?
Algorithme m6st7re8oucle4 Algorithme m6st7re8oucle4 Algorithme m6st7re8oucle4 Algorithme m6st7re8oucle4
# c$est 9 vous de trouver ce que fait cet algorithme:
variables a, b, c entiers naturels
dbut
# lecture des donnes
!ntrer " a, b #
# initialisation et calculs
c 3
tantque " b 0 #
faire si " " b mod 4 # = 3 #
alors c c ; a
fin*si
a a ; a
b b div 4
fin*tantque
# affichage rsultat
Afficher " c #
fin
Rponse. Cet algorithme calcule la valeur de a lev la puissance b (exponentiation rapide). Cet
algorithme utilise le mme principe que le prcdent : cette fois, cest la dcomposition binaire de b
qui est utilise. La variable a, elle, prend successivement les valeurs a, a
4
, a
5
, a
<
, etc. Lorsquun
tour de boucle correspond un 1 dans la dcomposition binaire de b, la variable c cumule par
produit la puissance correspondante de a.
Ainsi, pour b = 43 = 4
5
+ 4
4
+ 4
0
, la variable c vaudra finalement a ; a
5
; a
32
= a
3+5+32
=
a
43
= a
b
. Cet algorithme calcule donc la valeur de a la puissance b, ce que lon peut aisment
vrifier en le faisant tourner sur un (petit) exemple
Exercice 5. Afficher les diviseurs dun entier
crire un algorithme permettant dafficher les diviseurs dun entier naturel par ordre croissant.
Rponse. La boucle Pour vient encore notre rescousse ici (notons quil est inutile cependant de
parcourir lintervalle =n)4 + 3, n>). Attention, si n = 0, tous les entiers divisent n !...
Lalgorithme est le suivant :
Algorithme diviseurs?rdre0roissant Algorithme diviseurs?rdre0roissant Algorithme diviseurs?rdre0roissant Algorithme diviseurs?rdre0roissant
# cet algorithme ,ermet d$afficher les diviseurs d$un entier naturel
# ,ar ordre croissant
variables n, diviseur entiers naturels
dbut
# lecture des donnes
!ntrer " n #
# cas o% n est nul
si " n = 0 #
alors Afficher " &'ous les entiers non nuls sont diviseurs de 0& #
# cas gnral
sinon
# boucle de ,arcours, si diviseur divise n, on l$affiche
,our diviseur de 3 9 n div 4
faire si " n mod diviseur = 0 #
alors Afficher " diviseur #
fin*si
fin*,our
Afficher " n #
fin*si
fin
Exercice 6. Nombre premier
crire un algorithme permettant de dterminer si un entier naturel entr au clavier est premier.
Rponse. Il suffit de chercher un diviseur de n dans lintervalle =4,@acine0arre"n#>. Ds quun tel
diviseur est trouv, le nombre n nest pas premier. On utilisera donc la structure tantque qui permet
darrter la recherche ds quun diviseur est dcouvert.
Lalgorithme est le suivant :
Algorithme nombrePremier Algorithme nombrePremier Algorithme nombrePremier Algorithme nombrePremier
# cet algorithme ,ermet de dterminer si un entier naturel entr au
clavier # est ,remier
variables n, diviseur entiers naturels
rac rel
dbut
# lecture des donnes
!ntrer " n #
# initialisations
rac @acine0arre " n # # fonction racine carre
diviseur 4
# boucle de recherche d$un diviseur
tantque " " n mod diviseur 0 # et " diviseur A rac # #
faire
diviseur diviseur + 3
fin*tantque
# affichage rsultat
si " diviseur B rac #
alors Afficher " &Ce nombre est ,remier& #
sinon Afficher " &Ce nombre n$est ,as ,remier& #
fin*si
fin
Exercice 7. Nombres premiers jumeaux infrieurs 1000
Deux nombres premiers sont jumeaux si leur diffrence vaut 2 (par exemple, 5 et 7 sont deux
nombres premiers jumeaux). crire un algorithme permettant dafficher tous les couples de nombres
premiers jumeaux infrieurs 1000.
Rponse. Il suffit de modifier lalgorithme prcdent, en mmorisant le dernier nombre premier trouv.
On obtient alors :
Algorithme nombresPremiersDumeaux Algorithme nombresPremiersDumeaux Algorithme nombresPremiersDumeaux Algorithme nombresPremiersDumeaux
# cet algorithme ,ermet d$afficher la liste de tous les nombres ,remiers
# infrieurs 9 300
variables i, n, n,rec, diviseur entiers naturels
rac rel
dbut
# initialisation
n,rec 4
# boucle ,rinci,ale
,our i de E 9 FFF
faire
# initialisations
rac @acine0arre " n # # fonction racine carre
diviseur 4
# boucle de recherche d$un diviseur
tantque " " n mod diviseur 0 # et " diviseur A rac # #
faire
diviseur diviseur + 3
fin*tantque
# si n ,remier
si " diviseur A Arac #
alors # Gumeau avec n,rec H
si " n 1 n,rec = 4 #
alors Afficher " n,rec, n #
fin*si
# on met 9 Gour n,rec
n,rec n
fin*si
fin*,our
fin
Exercice 8. Calcul du n
ime
nombre de Fibonnacci
crire un algorithme permettant de calculer le nombre de Fibonacci I"n# : I"0# = 0, I"3# = 3, et
I"n# = I"n(3# + I"n(4#.
Rponse. On mmorise les valeurs de I"n# et I"n(3#, que lon maintient jour au fur et mesure
de lavance du calcul
Lalgorithme est le suivant :
Algorithme nombreIibonacci Algorithme nombreIibonacci Algorithme nombreIibonacci Algorithme nombreIibonacci
# cet algorithme ,ermet de calculer le nombre de Iibonacci I"n#
variables n, i, fibo, moins3 entiers naturels
dbut
# lecture des donnes
!ntrer " n #
# initialisations
fibo 3
moins3 0
# test si cas sim,le " n = 0 #
si " n = 0 #
alors Afficher " 0 #
sinon # boucle de calcul ,our le cas gnral
,our i de 4 9 n
faire fibo fibo + moins3
moins3 fibo 1 moins3
fin*,our
# affichage rsultat
Afficher " fibo #
fin*si
fin
Remarquons ici les oprations du corps de boucle ,our : nous nous sommes permis dutiliser un
artifice vitant lutilisation dune variable supplmentaire. Si nous avons effectu par exemple 3 tours
de boucles, nous avons moins3 = 4 et fibo = E (on a calcul I"5#).
Au 4
me
tour, nous faisons fibo E + 4 = J, puis moins3 J 1 4 = E, ce qui est bien correct.

Das könnte Ihnen auch gefallen