TP Maple 7 Arithmétique dans Z

publicité
TP Maple 7
Arithmétique dans Z
L’Arithmétique (des entiers et des polynômes) est à la base de nombreuses applications en cryptographie. Nous commencerons par
exposé les commandes usuelles de Maple avant de revenir sur
les algorithmes fondamentaux de l’arithmétique dans Z (Euclide,
Euclide étendu, etc.) et de les traduire en procédures. Une excellente référence pour cette seconde partie du TP est le Cours d’Algèbre (primalité, divisibilité, codes) de Michel Demazure paru
aux éditions Cassini.
1
2
Principales commandes d’arithmétique . . . . . . . . . . .
Les algorithmes fondamentaux de l’arithmétique . .
2.1 La division euclidienne . . . . . . . . . . . . . . . . . . . . .
2.2 Les algorithmes d’Euclide . . . . . . . . . . . . . . . . . .
2.3 L’écriture en base b des entiers naturels . . . . .
2.4 Le calcul rapide des puissances . . . . . . . . . . . . .
1
4
4
4
6
8
1. Principales commandes d’arithmétique
Maple peut manipuler des nombres comportant un très grand nombre de chiffres mais néanmoins limité. Le nombre maximal de chiffres, maxdigits, dépend du matétiel utilisé. On y aura
accès par la commande kernelopts(maxdigits).
> kernelopts(maxdigits);
268435448
Voici un aperçu des différentes opérations possibles sur les nombres entiers :
Ï La fonction factorielle : pour tout n ∈ N, n! se calcule au moyen de la commande factorial ou à
l’aide du symbole !.
> factorial(12), 12!;
479001600, 479001600
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
Ï Division euclidienne : rappelons rapidement le principe de la division euclidienne : pour tous
entiers naturels n et m 6= 0, il existe un unique couple d’entiers naturels (q, r ) vérifiant n = mq +
r et 0 É |r | < |m|. On dit que q et r sont respectivement le quotient et le reste dans la division
euclidienne de n par m. On utilise les commandes irem et iquo pour calculer le reste et le quotient
de la division euclidienne 1.
> irem(23,3);
2
> irem(-3,2);
−1
> -3 mod 2;
1
> iquo(23,3);
7
Ï Test de primalité : la fonction isprime permet de tester si un entier est premier 2 ou non.
> isprime(23);
true
Ï Décomposition en produit de facteurs premiers 3 : la fonction ifactor calcule la décomposition
en produit de facteur(s) premier(s) d’un entier donné.
> ifactor(561);
(3)(11)(17)
On a donc 561 = 3 × 11 × 17.
1. irem et iquo sont les abréviations respectives de integer remainder et integer quotient.
2. Un nombre entier est dit premier s’il est ditinct de 1 et si ses seuls diviseurs sont 1 et lui-même.
3. Il s’agit du théorème fondamental de l’Arithmétique : tout nombre entier distinct de 1 se décompose en produit de facteurs premiers.
http://lkcz.free.fr
2
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
On rappelle rapidement les principales fonctions arithmétiques offertes par Maple.
Arithmétique élémentaire sous Maple
Ï irem(n,m) : renvoie un reste de n dans la division euclidienne par m.
Ï iquo(n,m) : renvoie un quotient de n dans la division euclidienne par m.
Ï igcd(n,m) : renvoie pgcd(n, m).
Ï igcdex(a,b,’u’,’v’) : affecte aux variables u et v deux entiers relatifs vérifiant a ∧ b = u · a + v · b.
Ï ilcm(n,m) : renvoie ppcm(n, m).
Ï ithprime(n) : renvoie le n-ième nombre premier.
Ï isprime(n) : renvoie true si n est premier, false sinon.
Ï ifactor(n) : renvoie la décomposition en produit de facteur(s) premier(s) de n.
Exercice 1.
On note
(
3
X
¯
S 3 (Z) = x ∈ Z ¯ ∃(x1 , x2 , x3 ) ∈ Z3 , x =
xk2
k =1
)
1. Ecrire un programme renvoyant la liste des 15 plus petits éléments (au sens de la relation
d’ordre É) de S 3 (Z). En déduire que S 3 (Z) n’est pas stable par le produit.
2. Soit a, b, c et d quatre entiers relatifs tels que
a2 + b2 + c 2 + d 2 ≡ 0 [ 8 ]
Vérifier qu’ils sont tous pairs.
3. Soit n un entier tel que n ≡ −1 [ 8 ]. Montrer que n 6∈ S 3 (Z).
http://lkcz.free.fr
3
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
2. Les algorithmes fondamentaux de l’arithmétique
Cette partie expose les algorithmes élémentaires de l’arithmétique. On n’utilisera pas les commandes de Maple telles que igcd, irem, iquo, etc. Le principe est de redéfinir ces procédures au
moyen des algorithmes.
2.1. La division euclidienne
Rappelons le théorème de la division euclidienne :
La division euclidienne dans N
Soient a et b deux entiers naturels tels que 0 < b. Il existe un unique couple d’entiers naturels
(q, r ) tel que
a = b · q + r et 0 É r < b
appelés respectivement quotient et reste dans la division euclidienne de a par b. On dit aussi
que r et q sont respectivement le reste et le quotient de a modulo b.
L’algorithme de la division euclidienne de a par b le plus élémentaire est fondé sur des soustractions successives de b au nombre a.
Algorithme de la division euclidienne
½
r ←a
Initialisation
q ←0
½
r ← r −b
Tant que r Ê b faire
q ← q +1
Renvoyer q et r .
A la sortie de la boucle Tant que, les entiers q et r sont respectivement égaux au quotient et au
reste dans la division euclidienne de a par b.
Exercice 2.
Division euclidienne
Ecrire une procédure DivEuclide(a,b) d’arguments a ∈ N et b ∈ N∗ renvoyant sous forme d’une
liste [q, r ] le quotient et le reste dans la division euclidienne de a par b.
2.2. Les algorithmes d’Euclide
L’algorithme d’Euclide de calcul du pgcd de deux entiers naturels a et b est fondé sur la division
euclidienne. On notera a ∧ b le pgcd des entiers a et b. En voici le principe :
On note r 0 = a et r 1 = b. Si b = 0, r 0 ∧ r 1 = a. Sinons, on effectue en cascade des divisions euclidiennes :
http://lkcz.free.fr
4
TP Maple 7 — Arithmétique dans Z

r0




r1




 ..
.
 ri



..


.



r n0 −2
Lycée Janson-de-Sailly MPSI4 2010 - 2011
=
=
..
.
r 1 · q2 + r 2
r 2 · q3 + r 3
..
.
où
où
..
.
= r i +1 · q i +2 + r i +2 où
..
..
..
.
.
.
= r n0 −1 · q n0 + r n0 où
r2 < r1
r3 < r2 < r1
..
.
0 < r i +2 < r i +1 < r i < · · · < r 1
..
.
0 = r n0 < r n0 −1 < · · · < r 2 < r 1
Le processus s’arrête car les restes r i forment une séquence strictement décroissante d’entiers naturels : il existe n 0 ∈ N tel que r n0 = 0.
Venons-en à la remarque fondamentale : pour tout 0 É i É n 0 −2, l’ensemble des diviseurs de r i
et r i +1 étant égal à l’ensemble des diviseurs de r i +1 et r i +2 , on a
a ∧ b = r 0 ∧r 1 = r 1 ∧ r 2 = · · · = r n0 −1 ∧ r n0 = r n0 −1
On retiendra que le pgcd de a et b est égal au dernier reste non nul dans l’algorithme d’Euclide.
Algorithme d’Euclide
½
r0 = a
Initialisation :
r1 = b

 x ← r0
Tant que r 1 6= 0 faire r 0 ← r 1

r 1 ← reste dans la division euclidienne de x par r 0
Renvoyer r 0
Algorithme d’Euclide
Exercice 3.
Ecrire une procédure Euclide(a,b) d’arguments a et b dans N et renvoyant a ∧ b par l’algorithme d’Euclide.
Une variante de cet algorithme permet, au-delà du calcul du pgcd d de a et b, d’obtenir les
coefficients (u, v ) dans Z d’une relation de Bezout :
u ·a +v ·b = d
En voici le principe en reprenant les notations précédentes. On prouve par une récurrence facile
que, pour tout 0 É n É n 0 , il existe (u n , v n ) ∈ Z2 tel que
r n = un · a + v n · b
En effet si cette propriété est vérifiée pour tout k É n, on a
½
r n = un · a + v n · b
et r n+2 = r n − q n+2 · r n+1
r n+1 = u n+1 · a + v n+1 · b
ainsi
http://lkcz.free.fr
5
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
r n+2 = r n − q n+2 · r n+1 = u n · a + v n · b − q n+2 · (u n+1 · a + v n+1 · b)
¡
¢
¡
¢
= u n − q n+2 · u n+1 · a + v n − q n+2 · v n+1 · b
On peut donc définir une telle séquence de couple par les relations de récurrence suivantes :

u0 = 1


½

v0 = 0
u n+2 = u n − q n+2 · u n+1
, ∀0 É n É n 0 − 2,
u =0
v n+2 = v n − q n+2 · v n+1


 1
v1 = 1
Le couple recherché est (u n0 −1 , v n0 −1 ) puisque
a ∧ b = r n0 −1 = u n0 −1 · a + v n0 −1 · b
Cet algorithme est appelé algorithme d’Euclide étendu :
Algorithme d’Euclide étendu
½
½
½
r0 ← a
u0 ← 1
v0 ← 0
Initialisation :
,
,
r 1 ←b
u1 ← 1
v1 ← 1
x ← r0





r0 ← r1




r 1 ← reste de x modulo r 0




 y ← u0
Tant que r 1 6= 0 faire u 0 ← u 1


 u 1 ← y − u 0 × quotient de x modulo r 0




y ← v0




v0 ← v1



v 1 ← y − u 0 × reste de x modulo r 0
Renvoyer (u 0 , v 0 )
Algorithme d’Euclide étendu
Exercice 4.
Ecrire une procédure EuclideEtendu(a,b) d’arguments a et b dans N et renvoyant un couple
(u, v ) ∈ Z2 tel que a ∧ b = u · a + v · b.
2.3. L’écriture en base b des entiers naturels
Soit b ∈ N \ {0, 1}. Tout entier naturel n peut s’écrire de manière unique sous la forme
n = cm · b m + cm−1 · b m−1 + · · · + c1 · b + c0
où les ck valent {0, 1, · · · , b − 1} avec cm 6= 0. Cette expression est appelée écriture de n en base b ; les
ck sont les chiffres de n en base b. Dans le cas particulier où b = 10, on retrouve l’écriture décimale
usuelle des entiers : c0 est le chiffre des unités de n, c1 celui des dizaines, etc. Dans le cas d’une
base b quelconque, on notera de manière condensée n = ( cm cm−1 · · · c1 c0 )b .
http://lkcz.free.fr
6
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
Rappelons la preuve de ce résultat de numération. Elle est intéressante car constructive, c’està-dire qu’on en déduit un algorithme explicite de calcul des chiffres de n en base b. L’idée repose
sur l’égalité suivante :
µ³³
¶
´
¡
¢ ´
n=
· · · (cm ) × b + cm−1 · · · × b + c2 × b + c1 × b + c0
Le couple quotient-reste dans la division euclidienne de n par b est de la forme (q 0 , c0 ), le couple
quotient-reste dans la division euclidienne de q 0 par b est de la forme (q 1 , c1 ) et ainsi de suite. Ceci
nous éclaire et nous allons considérer la suite de couples (q p , c p ) définie par :
¡
¢

= quotient de n modulo b, reste de n modulo b
 (q 0 , c0 )

¡
¢
(q i +1 , ci +1 ) = quotient de q i modulo b, reste de q i modulo b pour tout i ∈ N
Comme 0 É q i +1 < q i ou q i = q i +1 = 0 pour tout entier naturel 4 i , la suite (q i )i Ê0 est nulle à partir
d’un certain rang i 0 . En notant m le plus petit entier m vérifiant cette propriété, on a donc que
ci = 0 pour tout i Ê m + 1 et cm = q m · b + cm = q m−1 =6= 0. On prouve alors par une récurrence
facile que
i
X
∀i ∈ N, n = q i · b i +1 +
ck · b k
k =0
d’où, en particulier, pour i = m,
n=
m
X
ck · b k
k =0
Le cas de la base b = 2 est particulièrement car c’est sous cette forme que la plupart des ordinateurs manipulent les nombres entiers.
Algorithme de calcul de l’écriture en base b d’un entier naturel

 q 0 ← quotient de n modulo b
Intialisation : c0 ← reste de n modulo b

L ← liste à un seul élément c0

x ← q0



q 0 ← quotient de x modulo b
Tant que q 0 6= 0 faire
c
← reste de x modulo b


 0
insérer c0 au début de la liste L
Renvoyer L
Exercice 5.
Ecrire une procédure EcritureBinaire(n) prenant en argument l’entier naturel n et renvoyant
la liste [cm , . . . , c1 , c0 ] de ses chiffres en base 2.
4. En effet, q i = q i +1 · b + c i +1 avec b et c i +1 positifs implique q i +1 É q i . D’autre part, l’égalité q i +1 = q i équivaut à (1 − b) · q i = c i +1 et
puisque les deux membres sont de signes opposés, ils sont nuls ; on en déduit que qi = 0 car b 6= 1.
http://lkcz.free.fr
7
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
2.4. Le calcul rapide des puissances
Commençons par un exemple élémentaire, le calcul de 46 . On peut commencer par une méthode naïve d’élévation à la puissance 6 :
42 = 4 × 4 = 16
43 = 42 × 4 = 16 × 4 = 64
44 = 43 × 4 = 64 × 4 = 256
45 = 44 × 4 = 256 × 4 = 1024
46 = 45 × 4 = 1024 × 4 = 4096
On a effectué au total 5 multiplications. On peut améliorer ce calcul de la manière suivante :
42 = 4 × 4 = 16
44 = 42 × 42 = 16 × 16 = 256
46 = 44 × 42 = 1024 × 4 = 4096
Cette séquence est plus efficace car ne nécessite que 3 multiplications. En réfléchissant un peu,
on s’aperçoit qu’elle repose sur l’écriture en base 2 de 6. On a 6 = (110)2 et
2
46 = 42
+2
¡ ¢22 ¡ ¢21 ¡ ¢20
= 41 × 41 × 40
De même, pour 9 = (1001)2, on a effectivement
¡ ¢23 ¡ ¢22 ¡ ¢21 ¡ ¢20
49 = 41 × 40 × 40 × 41
Plus généralement, si n = (n p · · · n 0 )2 , on a clairement
¡
¢2p ¡ n ¢2p−1
¡ ¢20
4n = 4n p
× 4 p−1
× · · · × 4n 0 =
õµ
³¡
· · · 1 × 4n p
¢2
× 4np−1
´2
···
¶2
× 4n 2
¶2
× 4n 1
!2
× 4n 0
Au total, on dénombre 2p multiplications avec cette méthode. On en déduit un calcul de proche
en proche de 4n selon le principe suivant :
½
z0 = 1
z i +1 = z i2 · 4np−i pour tout 0 É i É p
Exercice 6.
Ecrire une procédure PuissancesRapides1(a,n) calculant a n par cette méthode (avec n ∈ N et
a ∈ C). On utilisera la procédure EcritureBinaire(n) précédemment programmée.
http://lkcz.free.fr
8
TP Maple 7 — Arithmétique dans Z
Lycée Janson-de-Sailly MPSI4 2010 - 2011
Cette approche peut cependant être améliorée : la connaissance de l’écriture binaire de l’entier
naturel n n’est pas indispensable. On remarque simplement que

si n = 1

 ¡a
¢
n
n/2 2
a
si n est pair
a =

¡ (n−1)/2 ¢2

a× a
si n Ê 3 et n impair
Algorithme récursif de calcul rapide des puissances


si n = 1
 ¡a
¢2
Pui ssance(a, n/2)
si n est pair
Pui ssance(a, n) ←
¡
¢2


a × Pui ssance(a, (n − 1)/2)
si n est impair et n Ê 3
Exercice 7.
Algorithme de calcul rapide des puissances
Ecrire une procédure PuissancesRapides2(a,n) calculant a n où n ∈ N et a ∈ C par l’algorithme
de calcul rapide des puissances exposé ci-dessus.
http://lkcz.free.fr
9
Téléchargement