JSFH TP 3 Exercice 1 restart; with(numtheory): racines:=proc(p::prime,m::posint) local L; L:=convert(divisors(p^m-1),list)[2..-1]; return select(n->order(p,n)=m,L) end proc: p:=5; IiIm m:=6; IiIn p^m; IiZEYyI= N:=racines(p,m); N0ciIigiIioiIzkiIz0iI0AiI0ciI08iI1UiI2MiI2oiI3MiIyUpIiMkKiIkRSIiJG8iIiQnPSIkPCMiJFsjIiRfIyIkeiMiJHMkIiRNJSIkLyYiJGUmIiReJyIkVygiJG8pIiU7NiIlLTgiJU88IiVgPiIlS0EiJS9FIiUxUiIlM18iJTd5IiZDYyI= F:=map(n->iquo(phi(n),m),N); N0ciIiJGI0YjRiMiIiNGJEYkRiQiIiUiIidGJUYlIiM1RiYiIilGJyIjSSIjPyIjN0YpRipGKSIjQ0YpIiNnIiNTRi1GLUYtIiQ/IiIkIT1GL0YvRjAiJFMjIiRnJCIkPyg= add(n,n in F); # nombre de corps finis distincts (mais tous isomorphes entre eux) de cardinal 15625 IiUhZSM= Exercice 2 n:=N[19]; IiRfIw== F[19]; IiM3 Phi:=cyclotomic(n,X); LDQqJEkiWEc2IiIjcyIiIiokRiQiI21GJyokRiQiI2EhIiIqJEYkIiNbRiwqJEYkIiNPRicqJEYkIiNDRiwqJEYkIiM9RiwqJEYkIiInRidGJ0Yn d:=iquo(phi(n),m); # modulo p F se factorise en 12 facteurs tous de degr\303\251 6 IiM3 FF:=Factors(Phi) mod p; NyQiIiI3LjckLDAqJEkiWEc2IiIiJ0YjKiRGKCIiJiIiJSokRihGLSIiJCokRihGL0YtKiRGKCIiI0YyRihGLUYtRiNGIzckLCxGJ0YjRi5GLUYwRi1GMUYjRi1GI0YjNyQsMEYnRiNGK0YjRi5GMkYwRi1GMUYvRihGI0YtRiNGIzckLCxGJ0YjRitGI0YwRi1GKEYjRi1GI0YjNyQsLkYnRiNGK0YjRi5GMkYxRi9GKEYjRi1GI0YjNyQsLkYnRiNGK0YtRi5GMkYxRi9GKEYtRi1GI0YjNyQsLEYnRiNGLkYtRjBGI0YxRiNGLUYjRiM3JCwuRidGI0YrRjJGLkYvRjFGMkYoRjJGLUYjRiM3JCwsRidGI0YrRi1GMEYjRihGLUYtRiNGIzckLC5GJ0YjRitGL0YuRi9GMUYyRihGL0YtRiNGIzckLDBGJ0YjRitGLUYuRjJGMEYjRjFGL0YoRi1GLUYjRiM3JCwwRidGI0YrRiNGLkYvRjBGI0YxRjJGKEYjRi1GI0Yj LFF:=map(F->F[1],FF[2]); Ny4sMCokSSJYRzYiIiInIiIiKiRGJSIiJiIiJSokRiVGKyIiJCokRiVGLUYrKiRGJSIiI0YwRiVGK0YrRigsLEYkRihGLEYrRi5GK0YvRihGK0YoLDBGJEYoRilGKEYsRjBGLkYrRi9GLUYlRihGK0YoLCxGJEYoRilGKEYuRitGJUYoRitGKCwuRiRGKEYpRihGLEYwRi9GLUYlRihGK0YoLC5GJEYoRilGK0YsRjBGL0YtRiVGK0YrRigsLEYkRihGLEYrRi5GKEYvRihGK0YoLC5GJEYoRilGMEYsRi1GL0YwRiVGMEYrRigsLEYkRihGKUYrRi5GKEYlRitGK0YoLC5GJEYoRilGLUYsRi1GL0YwRiVGLUYrRigsMEYkRihGKUYrRixGMEYuRihGL0YtRiVGK0YrRigsMEYkRihGKUYoRixGLUYuRihGL0YwRiVGKEYrRig= P:=LFF[4]; # on choisit l'un des facteurs irr\303\251ductibles de F mod p LCwqJEkiWEc2IiIiJyIiIiokRiQiIiZGJyokRiQiIiQiIiVGJEYnRixGJw== alias(x=RootOf(P,X) mod p); # d\303\251finit l'\303\251l\303\251ment primitif x de K=F_p[x]$ SSJ4RzYi Power(x,6) mod p; LCoqJEkieEc2IiIiJiIiJSokRiQiIiQiIiJGJEYnRipGKg== Power(x,n) mod p;Power(x,n/2) mod p; # x est bien d'ordre 256 IiIi IiIl d:= trunc(sqrt(n)); IiM6 n_sur_d:=iquo(n,d); IiM7 U:=[seq(Power(x,r) mod p, r=0..d-1)]; NzEiIiJJInhHNiIqJEYkIiIjKiRGJCIiJCokRiQiIiUqJEYkIiImLCpGLEYrRihGI0YkRitGI0YjLC5GLEYjRipGI0YoRitGJkYrRiRGJ0YrRiMsKkYqRitGJkYnRiRGKUYjRiMsKkYsRitGKEYnRiZGKUYkRiMsLkYsRiNGKkYnRihGJ0YmRiNGJEYjRitGIywuRixGI0YqRidGKEYnRiZGI0YkRilGI0YjLCxGLEYjRipGJ0YoRidGJkYpRiNGIywqRixGI0YqRidGKEYrRiNGIywqRixGI0YqRitGKEYjRiNGIw== y:=Power(x,n-d) mod p; LCwqJEkieEc2IiIiJiIiJCokRiQiIiVGJyokRiRGJ0YnKiRGJCIiI0YsRiwiIiI= V:=[seq(Power(y,q) mod p, q=0..n_sur_d)]; NzMiIiIsLCokSSJ4RzYiIiImIiIkKiRGJiIiJUYpKiRGJkYpRikqJEYmIiIjRi5GLkYjLCxGJUYrRipGLkYsRi5GJkYuRilGIywoRipGK0YsRilGK0YjLCRGLEYpLCxGJUYjRixGI0YtRitGJkYjRitGIywqRixGK0YtRilGJkYuRi5GIywsRiVGKUYqRi5GLEYrRi1GKUYuRiMsKkYlRiNGLEYrRiZGI0YrRiMsKkYlRitGLUYjRiZGI0YjRiMsLEYlRi5GKkYjRixGKUYmRilGLkYjLCxGJUYpRipGLkYsRi5GLUYuRiZGLiwqRiVGKUYsRitGLUYjRiZGLiwuRiVGKUYqRiNGLEYpRi1GK0YmRiNGLkYjLCxGJUYrRipGI0YsRi5GLUYrRi5GIywsRiVGI0YqRilGLUYuRiZGKUYrRiMsLEYlRiNGKkYuRixGLkYtRilGI0Yj z1:=x^5+2*x^2+x+3; LCoqJEkieEc2IiIiJiIiIiokRiQiIiNGKUYkRiciIiRGJw== for v in V do zz:=evala(z1*v) mod p; if member(zz,U,'r') then member(v,V,'q');q:=q-1;r:=r-1; break; end if; end do: k:=q*d+r: q,r,k,evalb(z1=Power(x,k) mod p); Error, (in mod/Power) 2nd argument (exponent) must be a non-negative integer z2:=3*x^4+3*x^3+x^2+2*x+4; LCwqJEkieEc2IiIiJSIiJCokRiRGJ0YnKiRGJCIiIyIiIkYkRipGJkYr unassign('q','r'); for v in V do zz:=evala(z2*v) mod p; if member(zz,U,'r') then member(v,V,'q');q:=q-1;r:=r-1; break; end if; end do: k:=q*d+r: q,r,k; NiVJInFHNiJJInJHRiQsJkYjIiM6RiUiIiI= JSFH