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
Pk1
i=0 aibi, o`u |ai| ≤ b1 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 n1 un entier et (a2k1a2k2···a1a0)bson d´eveloppement en base b(avec a2k1= 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)i0d´efinie par F0= 0, F1= 1 et Fi+1 =
Fi+Fi1pour tout i1.
(i) Montrer que pour tout n,m0, 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 k1.
(iv ) Montrer que Fkest pair si et seulement si k0 (mod 3) et que 3 divise Fksi et seulement
si k0 (mod 4).
(v) Montrer plus g´en´eralement que Fkdivise Fmk pour tout m1.
(vi ) Soit d1 un entier. Montrer que si ddivise Fmet si ddivise Fn, alors Ddivise Fmnsi
mn.
(vii ) Prouver que pgcd(Fm, Fn) = Fpgcd(m,n)quelque soit m,n1.
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 mnest pair et pgcd(m, n) = pgcd(mn, n).
(ii ) En utilisant uniquement ces propri´et´es ainsi que les formules pgcd(m, m) = met pgcd(m, n) =
pgcd(n, m), calculer pgcd(312,182).
(iii ) Construire un algorithme de calcul de pgcd(m, n) qui utilise uniquement ces propri´et´es
du pgcd ainsi que les formules pgcd(m, m) = met pgcd(m, n) = pgcd(n, m). R´ediger un pseudo-
programme, qui termine lorsque d`es que m=n.
(iv ) Expliquer pourquoi au moins une op´eration sur trois consiste fait intervenir une division
par 2 (c’est-`a-dire utilise l’une des points (a) et (b) de la question (i)). En d´eduire la complexit´e
de l’algorithme lorsque les calculs s’effectuent en base 2.
Exercice 7. (i)´
Ecrire (101111010001000)2en base 8.
(ii ) Comment sont li´es les ´ecritures d’un entier naturel en base bet en base bk,k2 ?
1 / 2 100%