projet 2 - Rosane Ushirobira

publicité
L ICENCE MATH ÉMATIQUES 2 ÈME ANN ÉE
IS4 – 2008 – 2009
PROJET 2
E XERCICE 1 . On considère Z258 = {0, 1, . . . , 257}. On note par a la classe d’équivalence de a dans Z258 , c’est à dire,
a = {x ∈ Z | x ≡ a (mod 258)} = {x ∈ Z | le reste de la division de x par 258 est égal à a}. Par exemple, 258 = 0, 259 = 1,
832 = 58, etc. Pour chaque a ∈ Z258 , on définit fa : Z258 → Z258 par fa (x) = ax.
(1) Déterminer tous les éléments a ∈ Z258 pour lesquels fa est surjective. Déterminer tous les éléments a ∈ Z258
pour lesquels fa est bijective.
(2) Déterminer tous les couples [a, b] tels que fa ◦ fb = fb ◦ fa = IdZ258 . Tracer ces points sur un même graphique.
E XERCICE 2 . Écrire un procédure qui reçoit un entier positif n et qui envoie la liste des éléments a ∈ Zn tels que fa est
bijective. Essayez avec n = 303.
E XERCICE 3 . Écrire un procédure qui reçoit un entier positif n et qui envoie la liste des couples [a, b] tels que fa ◦ fb =
fb ◦ fa = IdZn . Essayez avec n = 303. Tracer le graphique avec ces points (comme ci-dessus).
E XERCICE 4 . Voici un message codé :
[233, 164, 160, 72, 130, 233, 302, 279, 118, 130, 283, 279, 49, 130, 22, 68, 302, 91, 22, 72, 68]
Pour le coder, on a transformé le message original en une liste L de nombres. Ensuite, on a choisit un élément a ∈ Z303
tel que fa soit bijective. Finalement, on a appliqué fa à la liste L. Quel est le message ?
Maintenant, on considère le problème suivant : étant donnés deux entiers positifs non-nuls a et b, on cherche à
calculer leur plus grand diviseur commun pgcd(a, b). Dans ce but, nous allons utiliser l’algorithme d’Euclide :
Théorème 1 :
Soient a et b ∈ N avec a > b > 0. Alors il existe r0 , r1 , . . . , r`+1 et q1 , . . . , q` avec ` > 0 tels que r0 = a, r1 = b, pour
1 ≤ i ≤ ` − 1, ri−1 = ri qi + ri+1 avec 0 < ri+1 < ri et r`−1 = r` q` avec r`+1 = 0. On a r` = pgcd(a, b).
E XERCICE 5 . Écrire une procédure eucl sur Maple qui calcule le pgcd de a et b positifs non-nuls donnés, en utilisant
le Théorème 1.
Une version alternative est donnée par l’algorithme suivant où l’on effectue uniquement des divisions et multiplications par 2 (donc moins coûteuse). On l’appellera l’algorithme binaire pour le pgcd.
r ← a, r’ ← b, s ← 0
while (2|r and 2|r’) do (r,r’,s) ← (r/2, r’/2, s+1)
repeat
while 2|r do r ← r/2
while 2|r’ do r’ ← r’/2
if r’ < r then (r,r’) ← (r’,r)
r’ ← r’ - r
until r’ = 0
d ← r 2s
2
output d
E XERCICE 6 . Écrire une procédure euclbin qui implémente l’algorithme ci-dessus sur Maple.
Il existe une version plus efficace de l’algorithme d’Euclide, appelée l’algorithme d’Euclide étendu :
Théorème 2 :
Soit a, b, r0 , r1 , . . . , r`+1 et q1 , . . . , q` comme dans le Théorème 1. On définit s0 , s1 , . . . , s`+1 et t0 ,t1 , . . . ,t`+1 par
s0 = 1, t0 = 0, s1 = 0, t1 = 1 et pour 1 ≤ i ≤ `, si+1 = si−1 − si qi et ti+1 = ti−1 − ti qi . Alors si a + ti b = ri pour tout
0 ≤ i ≤ ` + 1, et en particulier, s` a + t` b = pgcd(a, b) (identité de Bézout).
Cet algorithme s’écrit :
r ← a, r’ ← b, s ← 1, s’ ← 0, t ← 0, t’ ← 1
while r’ 6= 0 do
q ← br/r’c, r’’ ← r mod r’
(r,s,t,r’,s’,t’) ← (r’,s’,t’,r’’,s-s’q,t-t’q)
d ← r
output d,s,t
R EMARQUE . On remarque que la notation bxc indique le plus grande entier inférieur ou égal à x.
E XERCICE 7 . Écrire une procédure euclext qui implémente l’algorithme ci-dessus sur Maple. Cette procédure
reçoit a, b et envoie une liste [d, s,t];
Le prochain Théorème est très connu et très utile dans des nombreux problèmes, c’est le Théorème chinois des
restes :
Théorème 3 :
Soient n1 , . . . , nk des entiers positifs deux à deux premiers entre eux. Soient a1 , . . . , ak des entiers quelconques.
Alors il existe un entier z tel que
z ≡ ai (mod ni ) (1 ≤ i ≤ k).
De plus, tout entier z0 est solution de ces congruences si, et seulement si, z ≡ z0 (mod n) où n = n1 . . . nk .
Dans le cas k = 2, on va considérer l’algorithme qui, étant donnés les entiers z, n, z0 et n0 tels que pgcd(n, n0 ) = 1,
0 ≤ z < n et 0 ≤ z0 < n0 , envoie les entiers z00 et n00 tels que z00 ≡ z (mod n) et z00 ≡ z0 (mod n0 ) avec 0 ≤ z00 < n00 et
n00 = n n0 :
m ← n−1 mod n’
h ← ((z’ -z) m) mod n’
z’’ ← z + nh
n’’ ← n n’
output z’’,n’’
R EMARQUE . Par n−1 (mod n0 ), on veut dire l’entier ñ tel que nñ ≡ 1 (mod n0 ) avec ñ < n0 (pourquoi existe-t-il ?).
E XERCICE 8 . Montrer “à la main” (mais écrire sur la feuille de calcul) que les entiers z00 et n00 satisfont les conditions
souhaitées. Écrire une procédure chaid qui implémente l’algorithme ci-dessus sur Maple.
E XERCICE 9 . À l’aide de la procédure chaid, écrire une procédure chreste qui implémente le Théorème 3 (pour
k quelconque) sur Maple.
Téléchargement