• Aucun résultat trouvé

Université de Bordeaux Algèbre et calcul formel – Agrégation

N/A
N/A
Protected

Academic year: 2021

Partager "Université de Bordeaux Algèbre et calcul formel – Agrégation"

Copied!
1
0
0

Texte intégral

(1)

Université de Bordeaux Algèbre et calcul formel – Agrégation

Mathématiques 2020–2021

FEUILLE D’EXERCICES n

o

12

Logarithme discret

Soit G un groupe cyclique et soit g un générateur de G. Soit aG. Le problème est de trouver un entier k tel que a = g

k

. On va s’intéresser au cas où G = ( Z /p Z )

, où p désigne un nombre premier.

La commande existe dans sage : c’est log, appliqué à un élément de G.

À titre d’exercice, on va quand même programmer un algorithme pour ce pro- blème, de complexité algébrique O(p log p) (la complexité de l’algorithme naïf est en O(p)) : c’est l’objet de l’exercice 2. L’exercice 1 consiste à retrouver cer- taines commandes sage en rapport avec le problème.

Exercice 1 – [ Commandes sage ]

Cet exercice consiste à trouver une commande sage pour chacune des questions.

1) Définir A = Z /2017 Z . Soit G son groupe multiplicatif. Comment trouver un générateur de G par une commande sage ? Soit g un tel générateur. En utilisant log, trouver k tel que 456 = g

k

.

2) Comment trouver l’ordre de 76 dans G ?

3) Soit L une liste d’éléments de G. Comment décider si un élément q est ou non dans L ? Si oui, comment déterminer l’indice correspondant ?

Exercice 2 – [ Algorithme : Pas de bébé, pas de géant ]

Soit G un groupe cyclique de générateur g, et soit a un élément de G. On décrit un algorithme pour trouver k tel que ag

k

= 1.

Soit N l’ordre de G et b = l

N − 1 m . Alors b

2

> k. Soit L = [a, ag, . . . , ag

b1

].

On trie la liste L : cela va permettre des recherches dans L en O(log b) comparai- sons. On calcule ensuite c = g

b

. Pour q ∈ { 0, 1, . . . , b } , on calcule c

q

et on cherche si cet élément se trouve dans la liste L. Si c’est le cas, on a trouvé r ∈ [[0, b − 1]]

tel que c

q

= ag

r

, c’est-à-dire tel que ag

bq+r

= 1.

Programmer cet algorithme dans le cas où G = ( Z /p Z )

.

Références

Documents relatifs

et si a est un objet susceptible de définir un élément de A, alors la commande A(a) définit cet élément ; par exemple, l’entier 1 définit l’élément ¯1 de Z /3 Z. Nous

Pour d’autres structures, il faut définir au préalable l’ensemble qu’on va consi- dérer. Comme ci-dessus, si l’on met x plutôt que t, cela va fonctionner, mais p ne sera

3) En utilisant la procédure ci-dessus, établir la liste des 20 plus petits nombres de Mersenne premiers, ou plutôt la liste des 20 plus petits nombres premiers p tels que M p est

Si l’on essaie la commande NumberField sur ce polynôme, on recevra un message d’erreur, car f n’est pas irréductible, et donc le quotient Q[x]/(f) n’est pas un corps.. Pour le

On fera le calcul en utilisant le résultant, puis en utilisant la

Dans le CAS, il faut utiliser la commande STORE pour stocker un objet dans une variable, ou utiliser la touche VARS depuis l’éditeur d’équations (puis NEW ou EDIT du bandeau

- utiliser les fonctions de calcul formel que l'on trouve dans CAS du bandeau de la touche MATH (pressée depuis l'écran HOME), la variable courante est alors systématiquement

Exercice 1 : Nous avons vu en cours des algorithmes permettant de factoriser un polynôme à coefficients dans Z /p Z , où p est un nombre premier. On va donc modifier la