Java Printing - Erwan Biland

Transcription

Java Printing - Erwan Biland
Chercher les points d'une courbe sur un corps fini
Erwan Biland - 10 février 2011
On s'intéresse à la courbe projective C d'équation x4 C y4 C z4 = 0, définie sur le corps F5 à 5 éléments.
Pour simplifier, vu le rôle symétrique des variables, on prendra z = 1. La courbe C n'a clairement pas de
point de degré 1 sur F5 .
On trouve facilement, sur F 2 , le point
5
2 : 0 : 1 , qui fournit un point de degré 2 sur F5 .
On cherche ensuite un point de degré 3. Le corps F
53
est le corps de rupture du polynôme irréductible
t3 C t C 1. Notons en a une racine, et commençons par déterminer l'ordre de a dans le groupe multiplicatif
F *3 .
5
id1:bda:
while i ! 53 and b s 1 do
i d iC1 :
b d rem a$b, a3 C a C 1, a
od :
print i
mod 5
62
(1)
Comme 53 K 1 = 124 = 4$31, on obtient que a2 engendre le sous-groupe des éléments d'ordre impair dans
F *3 , qui est aussi l'ensemble des éléments admettant une racine quatrième dans F *3 . On va donc chercher
5
5
x0 et y0 dans ce sous-groupe tels que x0 C y0 C 1 = 0.
id1:jd1:
x0 d a2 : y0 d a2 : somme d 2$a2 C 1 :
while i ! 31 and somme s 0 do
if j = i then i d i C 1 : j d 1 :
x0 d rem a2 $x0 , a3 C a C 1, a : y0 d a2 :
else j d j C 1 :
y0 d rem a2 $y0 , a3 C a C 1, a :
fi :
somme d x0 C y0 C 1 mod 5 :
od :
if somme = 0 then print i, j
else print "Aucun point trouvé"
fi:
12, 2
(2)
rem a 24 C a4 C 1, a3 C a C 1, a mod 5
0
On a donc trouvé sur F
53
(3)
le point a6 : a : 1 , ce qui vérifie le résultat annoncé dans l'exposé (toute courbe
projective lisse sur un corps fini possède des points de degrés premiers entre eux dans leur ensemble).
A noter que j'avais annoncé qu'il n'y avait pas dans C de point de degré 3, mais qu'il y en avait de degré 5 ;
la première partie est fausse (erreur de programmation...), mais la deuxième est vraie comme on le vérifie
ci-dessous (avec le polynôme irréductible x5 K x K 1).
id1:bda:
while i ! 55 and b s 1 do
i d iC1 :
b d rem a$b, a5 K aK1, a mod 5
od :
print i
781
(4)
id1:jd1:
x0 d a : y0 d a : somme d 2$a C 1 :
while i ! 781 and somme s 0 do
if j = i then i d i C 1 : j d 1 :
x0 d rem a$x0 , a5 K a K 1, a : y0 d a :
else j d j C 1 :
y0 d rem a$y0 , a5 K a K 1, a :
fi :
somme d x0 C y0 C 1 mod 5 :
od :
if somme = 0 then print i, j
else print "Aucun point trouvé"
fi
163, 90
781 C 163
4
236
781$2 C 90
4
413
rem a 236$4 C a413$4 C 1, a5 K a K 1, a mod 5
0
D'où le point a236 : a413 : 1 .
(8)