M1 MFMI. Algorithmique : feuille d’exercices no4.
Exercice 1. Comment comparer deux entiers naturels ´ecrits en base b? Quelle est la com-
plexit´e de la comparaison ?
Exercice 2. Discuter la complexit´e des algorithmes d’addition, de soustraction, de multipli-
cation et de division euclidienne lorsque l’un des entiers nettement plus petit que l’autre.
Exercice 3. Soit b > 1 un entier. On consid`ere un entier relatif nrepr´esent´e sous la forme
Pk−1
i=0 aibi, o`u |ai| ≤ b−1 pour tout i.
(i) Montrer que si n= 0, alors ai= 0 quelque soit i.
(ii ) Comment d´eterminer le signe de nlorsque n6= 0 ? Une telle repr´esentation de nest-elle
unique ?
(iii ) R´ediger un pseudoprogramme pour un algorithme qui ´ecrit nen base bet ´etudier sa
complexit´e. (Si n6= 0, l’´ecriture en base nest un couple (, |n|), o`u ∈ {±} et |n|est ´ecrit en base
n. Par contre, 0 n’a pas de signe.)
(iv ) Utiliser votre r´eponse `a la question (iii ) pour r´ediger un pseudoprogramme qui calcule
m+nen base bquelque soit les signes des entiers relatifs met n.
Exercice 4. (i) Quel est le chiffre dominant (en base 10) de la partie enti`ere de √365 ? de
√3650 ? de √36500 ? Quelle est la puissance de 10 dominante ?
On note n≥1 un entier et (a2k−1a2k−2···a1a0)bson d´eveloppement en base b(avec a2k−1= 0
si besoin).
(ii ) Expliquer comment d´eterminer le chiffre dominant en base bde la partie enti`ere de √n,
et la puissance de bdominante, en utilisant des op´erations ´el´ementaires.
(iii ) Construire un algorithme pour calculer la partie enti`ere de √net en ´etudier la complexit´e.
Exercice 5. On reprend la suite de Fibonacci (Fi)i≥0d´efinie par F0= 0, F1= 1 et Fi+1 =
Fi+Fi−1pour tout i≥1.
(i) Montrer que pour tout n,m≥0, on a Fm+n+1 =FmFn+Fm+1Fn+1.
(ii ) Concevoir un algorithme aussi rapide que possible pour calculer Fnlorsque nest grand.
(iii ) Montrer que Fket Fk+1 sont premiers entre eux quelque soit k≥1.
(iv ) Montrer que Fkest pair si et seulement si k≡0 (mod 3) et que 3 divise Fksi et seulement
si k≡0 (mod 4).
(v) Montrer plus g´en´eralement que Fkdivise Fmk pour tout m≥1.
(vi ) Soit d≥1 un entier. Montrer que si ddivise Fmet si ddivise Fn, alors Ddivise Fm−nsi
m≥n.
(vii ) Prouver que pgcd(Fm, Fn) = Fpgcd(m,n)quelque soit m,n≥1.
Exercice 6 (algorithme binaire de calcul du pgcd). On note m > 0, n > 0 deux entiers.
(i) V´erifier les propri´et´es suivantes du pgcd :
(a) si met nsont pairs, alors pgcd(m, n) = 2 pgcd(m
2,n
2).
(b) si mest pair et nest impair, alors pgcd(m, n) = pgcd(m
2, n).
(c) si met nsont impairs, et si m>n, alors m−nest pair et pgcd(m, n) = pgcd(m−n, n).