MHT812 - Master Université Bordeaux 1 Mathématiques Devoir Surveillé, 3 mars 2010 Durée 2h00. Documents interdits. Année 2009-2010 Exercice 1 [Un calcul simple] On considère l'algorithme suivant. Algorithme 1. Entrées: Deux entiers naturels a et b. Sorties: ? 1: 2: 3: y ←− 0. tantque b 6= 0 faire si b impair alors y ←− y + a 4: nsi 5: b ←− bb/2c 6: si b 6= 0 alors 7: 8: 9: 10: 11: a ←− 2a nsi n tantque Retourner y. 1) Que fait cet algorithme ? Justier avec précision. 2) Déterminer le nombre d'exécutions de la boucle tant que en fonction de b. Exercice 2 [Décomposition d'un polynôme a en base p] Soient A ou égal à n < km. de n, p et un polynôme unitaire de On veut écrire a A[X] de degré inférieur k un entier. On suppose sous la forme a = a0 + a1 p + · · · + ak−1 pk−1 (1) où pour tout à a un polynôme A[X] de degré m, un anneau commutatif unitaire, i ∈ {0, . . . , k−1}, ai est un polynôme de A[X] de degré inférieur strictement m. 1) Montrer que si une telle décomposition existe, alors une division euclidienne permet de trouver a0 . 2) Montrer l'existence et l'unicité de polynômes ai de degré strictement inférieur à m vériant (1). 3) Écrire un algorithme permettant de calculer les ai de a par p, de reste façon récursive sur r et de quotient q pour trouver en faisant la division euclidienne a0 , puis se rappelant lui-même de q. 4) On veut ici estimer la complexité algébrique de cet algorithme. On utilise la division euclidienne classique. Montrer que l'algorithme rend bien les opérations dans 1on m de A 1. A[X] de degré n par 2m(n − m + 1) opérations dans A. rappelle que la division d'un polynôme de A[X] peut se faire en au plus ai , en au plus (km)2 − km2 un polynôme unitaire de degré Exercice 3 [Algorithme de Garner] m1 , . . . , mr (r > 1) sont r entiers > 1 prea1 , . . . , ar sont r entiers quelconques, le système de Le théorème des restes chinois dit que si miers entre eux deux à deux, et si congruences (S) : x ≡ ai mod mi (1 6 i 6 r) Q M = 16i6r mi par a une solution unique, dénie modulo x= (2) r X ai (Mi−1 mod mi )Mi , i=1 où Mi = 1) Y mj . j6=i Trouver les solutions de (S) lorsque r = 3, m1 = 7, m2 = 11, m3 = 13, a1 = 3, a2 = 6, a3 = 7. On considère l'algorithme suivant. Algorithme 2. Algorithme de Garner Entrées: Les mi , les ai . Sorties: x unique solution de (S) dans l'intervalle [0, M [ pour i = 2 à r faire 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 2) Ci ←− 1 pour j = 1 à i − 1 faire u ←− m−1 j mod mi Ci ←− u · Ci mod mi n pour n pour u ←− a1 , x ←− u pour i = 2 à r faire u ←− (ai − x) · Ci mod mi Q x ←− x + u · i−1 j=1 mj n pour Retourner x. Appliquer cet algorithme à r = 3, m1 = 7, m2 = 11, m3 = 13, a1 = 3, a2 = 6, a3 = 7. 3) Montrer que tout nombre y ∈ [0, M [ s'écrit de façon unique sous la forme y = b1 + b2 m1 + b3 m1 m2 + · · · + bn m1 · · · mn−1 , avec bi ∈ [0, mi [. 4) Chercher à déterminer les bi associés au x cherché en fonction des mi et des ai , et montrer que l'algorithme de Garner donne bien l'unique solution de (S) qui appartient à l'intervalle [0, M [. 5) Quel est l'avantage de cet algorithme sur le calcul direct utilisant (2) ?