Lyc´ee Benjamin Franklin PTSI−2012-2013
D. Blotti`ere Maple
TP n˚2
Proc´ edures et loi de r´ eciprocit´ e quadratique
1Plan 1. Proc´edures
2. Multiplication dansZ/NZ 3. Loi de r´eciprocit´e quadratique
Ce T.P. a deux objectifs.
1. Introduire les proc´edures, qui permettent de d´efinir de nouvelles fonctions Maple. Ces nouvelles fonctions (ou proc´edures donc) seront utiles pour d´ecouper un probl`eme complexe en un certain nombre de probl`emes plus ´el´ementaires, que l’on saura r´esoudre. Les proc´edures donnent, en outre, plus de lisibilit´e au code.
2. Faire un pas vers la loi de r´eciprocit´e quadratique, qui est un r´esultat substantiel de la th´eorie des nombres,
`
a l’aide de Maple. Cela nous offrira l’occasion de construire nombre de proc´edures et ainsi de nous entraˆıner.
1 Proc´ edures
D´efinition 1 (Proc´edure)
Une proc´edure Maple peut ˆetre vue comme un analogue d’une fonction math´ematique. On peut, dans un premier temps, voir une proc´edure comme un programme Maple qui, `a partir de valeurs donn´ees (arguments), retourne une unique valeur (valeur de sortie).
arguments // Proc´edure //valeur de sortie
La syntaxe g´en´erale d’une proc´edure Maple est la suivante.
proc(arg1, . . . , argn) #arg1, . . . , argn sont les arguments de la proc´edure localvar1, . . . , varm; #var1, . . . , varmsont des variables ”auxiliaires”
instruction 1 ; instruction 2 ; . . .
instructionp;
return(valeur de sortie) ; end ;
Remarque 1
1. Les variables locales, i.e. d´efinies avec local, ne sont cr´e´ees que pour le corps de la proc´edure (on parle d’existence locale). Hors du corps de la proc´edure, les valeurs des variables locales ne sont pas accessibles.
2. La d´efinition de proc´edure donn´ee ci-dessus mentionne des arguments, des variables locales et une valeur de sortie. Signalons qu’une proc´edure peut avoir n’aucun argument, n’utiliser aucune variable locale ou n’avoir aucune valeur de sortie.
1. Cf. conf´erence de J.-B. Bost intitul´ee≪Le travail du math´ematicien≫, donn´ee le 22 novembre 2012.
Exemple 1
Ci-dessous, on donne le code d’une proc´edure, nomm´eesomme, qui a deux argumentsa etb (que l’on suppose ˆetre des nombres) et qui renvoie la sommea+b. En elle-mˆeme, cette proc´edure a un int´erˆet discutable, mais elle pr´esente l’avantage d’ˆetre simple `a comprendre.
somme:=proc(a,b) locals; s:=a+b; return(s) ; end ;
Saisir ce code. `A ce moment, on dispose d’une nouvelle fonction Maple (somme) que l’on peut appeler/ex´ecuter comme suit.
somme(12,9) ;
Remarque 2
Apr`es avoir d´efini une proc´edure, on veillera toujours `a la tester en choisissant des valeurs pertinentes.
Exercice 1
En s’inspirant de la proc´eduresomme, ´ecrire une proc´edure, nomm´eesomme bis, r´ealisant la mˆeme tˆache que somme, mais n’utilisant pas de variable locale.
Exercice 2
Sin est une variable contenant un entier, l’instruction
nmod 2 ;
retourne la valeur du reste de la division euclidienne denpar 2, i.e.
• 0 sinest pair (i.e. divisible par 2) ;
• 1 sinest impair.
A l’aide de la commande mod (pour modulo), ´ecrire une proc´edure nomm´ee` is paird’argument un entiernqui retourne 1 si l’entier nest pair et 0 sinon.
Exercice 3
Voici le code d’une proc´edure Maple.
somme entiers:=proc(n) locals, k;
s:=0 ; k:=1 ;
while (k <=n) do s:=s+k; k:=k+ 1 ; od ;
return(s) ; end ;
1. Saisir ce code.
2. Que fait la proc´eduresomme entiers? On pr´ecisera l’ensemble o`u est implicitement suppos´e vivre l’argu- mentn.
3. Tester la proc´eduresomme entierssur les valeurs 0,1,2,3,4 pour v´erifier la r´eponse `a la question 2.
4. ´Ecrire une proc´edure somme cubesd’argumentn (suppos´e ˆetre un entier naturel non nul) et retournant la valeur de la somme
13+ 23+. . .+n3=
n
X
k=1
k3. 5. Saisir le code Maple suivant :
a:= 123 ;
printf(”La valeur de la derni`ere variable affect´ee est a.”) ; printf(”La valeur de la derni`ere variable affect´ee est %d.”,a) ;
et commenter.
6. `A l’aide des deux proc´edures somme entiers, somme cubes et d’une boucle for, ´ecrire un code Maple testant la validit´e de l’´egalit´e
(∗) 13+ 23+. . .+n3= (1 + 2 +. . .+n)2 pour tous les entiers n∈J1,20K.
Pour chaque rang n∈J1,20K, on souhaite obtenir l’affichage :
L’identit´e (*) est v´erifi´ee au rang n.
si l’´egalit´e est v´erifi´ee et l’affichage :
L’identit´e (*) n’est pas v´erifi´ee au rangn.
dans le cas contraire, o`unest remplac´e par sa valeur.
Remarque 3
On a d´emontr´e (par r´ecurrence) dans le chapitre 1 du cours (cf. exemple 22) que pour toutn∈N∗ :
n
X
k=1
k= n(n+ 1)
2 .
D’autre part, dans l’exercice 18, on a ´etabli (par r´ecurrence) que pour toutn∈N∗ :
n
X
k=1
k3=
n(n+ 1) 2
2 .
L’identit´e (*) que l’on a simplement v´erifi´ee avec Maple pourn∈J1,20Kest donc en fait vraie pour toutn∈N∗. Exercice 4
Ecrire une proc´edure nomm´ee´ f actorielle d’argument un entier naturel n (´eventuellement nul donc) qui re- tourne la valeur den!.
2 Multiplication dans Z /N Z
SoitN ∈N∗ fix´e.
D´efinition 2 (Ensemble Z/NZ) On note
Z/NZ={0,1,2,3, . . . , N−1}
des N restes possibles pour la division d’un entier parN.
D´efinition 3 (Notation a) Sia est un entier, alors on note
a∈Z/NZ le reste de la division euclidienne dea parN.
D´efinition 4 (Multiplication dans Z/NZ) 1. Soienta, b∈Z/NZ.
(a) On d´efinit a×b par :
a×b=a×b∈Z/NZ o`u×r´ef`ere `a la multiplication usuelle des entiers.
(b) Le nombrea×bs’obtient en calculant d’abord a×b (mutliplication usuelle d’entiers), puis en prenant le reste de a×b dans sa division euclidienne parN.
2. On dit que l’on multiplie moduloN, lorsque l’on utilise×dansZ/NZ. Exemple 2
On suppose ici queN = 3. On travaille donc modulo 3.
La table de multiplication (pour ×) deZ/3Z={0,1,2}est donc la suivante.
× 0 1 2
0 0 0 0
1 0 1 2
2 0 2 1
On a plac´e 1 (= 2×2) dans la case en bas `a droite car2×2 = 4et 4 a pour reste 1 dans sa division euclidienne par 3.
Exercice 5
On suppose ici queN = 5. On calcule donc modulo 5.
Calculer ”`a la main” (i.e. sans l’aide de Maple) les nombres suivants
2×2 ; 2×3 ; 3×3.
Exercice 6
Ecrire une proc´edure nomm´ee´ mult mod d’argument(a, b, N)o`u – N est un entier naturel non nul ;
– aetb sont deux ´el´ements deZ/NZ;
qui renvoie la valeur de a×b dansZ/NZ(on calcule donc modulo N).
Exercice 7
On suppose ici queN = 7. On travaille donc modulo 7.
En utilisant une boucle for (voire des boucles for) et la proc´edure mult mod construite dans l’exercice 6, compl´eter la table de multiplication de (pour×) deZ/7Z={0,1,2,3,4,5,6}.
× 0 1 2 3 4 5 6
0
1
2
3
4
5
6
D´efinition 5
On dit qu’un ´el´ement entier nest un carr´e moduloN s’il existea∈Z/NZtel que : a×a=n.
Exemple 3
Ici on suppose `a nouveau queN = 7. On travaille donc modulo 7.
1. Le nombre 23 est un carr´e modulo 7.
En effet
23 = 2 et
2 = 3×3.
2. Le nombre 10 n’est pas un carr´e modulo 7. En effet, 10 = 3
et 3 n’apparaˆıt pas sur la diagonale de la table de multiplication de Z/7Zdress´ee `a l’exercice 7.
Exercice 8
Ecrire une proc´edure nomm´ee´ square mod d’argument(a, N)o`u – N est un entier naturel non nul ;
– aest un ´el´ement deZ/NZ;
qui renvoie la valeur de a×a dans Z/NZ (on calcule donc modulo N). On pourra s’inspirer de la proc´edure mult modconstruite `a l’exercice 6.
D´efinition 6 (Symbole de Legendre)
Soit nun nombre entier. On d´efinit le symbole de Legendre n N
par :
n N
=
0 siN divise n ;
1 siN ne divise pasnet si nest un carr´e moduloN ;
−1 siN ne divise pasnet si nn’est pas un carr´e modulo N .
Remarque 4
Dans le cas o`u nne divise pasN, le symbole de Legendren N
encode donc le fait quensoit ou non un carr´e modulo N.
Exercice 9
Ecrire une proc´edure nomm´ee´ symbole legendre d’argument(n, N)o`u – N est un entier naturel non nul ;
– nest un entier ;
qui renvoie la valeur du symbole de Legendren N
.
3 Loi de r´ eciprocit´ e quadratique
D´efinition 7 (Nombre premier) Un entier naturelpest dit premier si :
– p≥2;
– pne poss`ede pas d’autres diviseurs entiers naturels que 1 et lui-mˆeme.
Exemple 4
1. Les nombres2,3,5,7,11,13sont des nombres premiers.
2. Le nombre 51 n’est pas premier (3 est un entier naturel qui divise 51 et 3 est diff´erent de 1 et 51 ( !)).
Remarque 5
Le caract`ere premier d’un nombre peut ˆetre test´e avec la commande Maple isprime.
Exercice 10
A l’aide de Maple, d´eterminer si le nombre` 123457 est ou non premier.
On examine `a pr´esent la question suivante.
Sipetqsont deux nombres premiers impairs distincts, alors y a-t-il un lien entre les propri´et´es
≪pest un carr´e moduloq≫ et ≪q est un carr´e modulop≫ ?
Il s’agit d’une question d´elicate, qui admet n´eanmoins une r´eponse positive et pr´ecise, donn´ee par le th´eor`eme suivant.
Th´eor`eme 1 (Loi de r´eciprocit´e quadratique)
Soientpetq des nombres premiers impairs distincts. On a : p
q q p
= (−1)(p−1)(q−1)4 .
La loi de r´eciprocit´e quadratique2 a ´et´e conjectur´ee par Euler et Legendre et d´emontr´ee par Gauß (1801).
Il s’agit d’un r´esultat profond, dont nous ne discuterons pas la preuve. On se propose simplement de le v´erifier num´eriquement sur un certain nombre d’exemples.
Exercice 11
V´erifier la validit´e de la loi de r´eciprocit´e quadratique dans les cas suivants.
p= 13 etq= 83 ; p= 17etq= 127 ; p= 33331etq= 131071
On v´erifiera que tous ces nombres sont bien premiers et on pourra utiliser la proc´edure symbole legendre construite dans l’exercice 9.
2. On a ici donn´e une version partielle de la loi de r´eciprocit´e quadratique. Par exemple, on a aussi un r´esultat lorsquep= 2 et