JSFHTP 3Exercice 1restart;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;m:=6;p^m;N:=racines(p,m);F:=map(n->iquo(phi(n),m),N);add(n,n in F); # nombre de corps finis distincts (mais tous isomorphes entre eux) de cardinal 15625Exercice 2n:=N[19];F[19];Phi:=cyclotomic(n,X);d:=iquo(phi(n),m); # modulo p F se factorise en 12 facteurs tous de degr\303\251 6FF:=Factors(Phi) mod p;LFF:=map(F->F[1],FF[2]);P:=LFF[4]; # on choisit l'un des facteurs irr\303\251ductibles de F mod palias(x=RootOf(P,X) mod p); # d\303\251finit l'\303\251l\303\251ment primitif x de K=F_p[x]$Power(x,6) mod p;Power(x,n) mod p;Power(x,n/2) mod p; # x est bien d'ordre 256d:= trunc(sqrt(n));n_sur_d:=iquo(n,d);U:=[seq(Power(x,r) mod p, r=0..d-1)];y:=Power(x,n-d) mod p;V:=[seq(Power(y,q) mod p, q=0..n_sur_d)];z1:=x^5+2*x^2+x+3;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);z2:=3*x^4+3*x^3+x^2+2*x+4;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;JSFH