\documentclass[12pt,a4paper]{article}
\usepackage{multicol}
\usepackage[french]{babel}
\newfont{\mini}{cmssi10 scaled 480}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\euro{\mbox{\textsf{C}\kern -2.33em{\raise0.24ex\vbox{\small\it =}}}}
%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\fin{\nolinebreak \raise-0.1em\hbox{$\Box$}}
\def\stackunder#1#2{\mathrel{\mathop{#2}\limits_{#1}}}
\def\dual{ ^{\rm v}}
\def\bidual{ ^{\rm vv}}
\def\primedual{ ^{\prime \rm v}}
\def\ideal{{\cal J}}
\def\LL{{\cal L}}
\def\max{{\cal M}}
\def\quot#1#2{\mbox{\raise 0.1cm\hbox{$#1$}{\big /}\raise -0.1cm\hbox{$#2$}}}
\def\danger{{\Large \bf
    $\bigtriangleup$}\kern-0.32cm\raise0.05cm\hbox{\small
    !}\kern0.32cm\lower0.05cm\hbox{}}
%%%%%%%
\newlength{\largeurtmp}
\def\rela{\settoheight{\largeurtmp}{Z}{\rm Z} \kern -0.6\largeurtmp
  \raise 0.05cm\hbox{\tiny{\it /}}\kern 0.6\largeurtmp}
\def\petitrela{\settoheight{\largeurtmp}{Z}{\rm Z} \kern -0.4\largeurtmp
  \raise 0.05cm\hbox{\tiny{\it /}}\kern 0.4\largeurtmp}
\def\petitcomplex{{
    \settoheight{\largeurtmp}{$_C$}{\rm C}\kern -\largeurtmp
    \rule{0.25pt}{1.3\largeurtmp}\kern \largeurtmp}}
\def\complex{{
    \settoheight{\largeurtmp}{Q}{\rm C}\kern -0.66\largeurtmp
    \rule{0.25pt}{0.9\largeurtmp}\kern 0.66\largeurtmp}}
\def\ratio{{
    \settoheight{\largeurtmp}{C}{\rm Q}\kern -0.75\largeurtmp
    \rule{0.25pt}{0.9\largeurtmp}\kern 0.75\largeurtmp}}
\def\petitratio{{
    \settoheight{\largeurtmp}{C}{\rm Q}\kern -0.6\largeurtmp
    \rule{0.25pt}{0.6\largeurtmp}\kern 0.6\largeurtmp}}
\newcommand{\proj}{{\rm I} \! {\rm P}}
\newcommand{\reel}{{\rm I} \! {\rm R}}
\newcommand{\Fp}{{\rm I} \! {\rm F}_p}
\newcommand{\nat}{{\rm I} \! {\rm N}}
%%%%%%%%%%%%%%%Debut de macros de fiches d'exos
%%les macros sont \exo, \qu, \quskip \squ \qusqu \qusquskip
\newcounter{exo}
\newcounter{question}
\newlength{\lng}
\newcounter{sousquestion}
\setcounter{exo}{1}
\def\exo{

  \bigskip
  \noindent{\bf Exercice
    \Roman{exo}:}\addtocounter{exo}{1}\setcounter{question}{0}\nopagebreak 

  }
\def\exotitre#1{

  \bigskip
  \noindent{\bf Exercice
    \Roman{exo}: #1}\addtocounter{exo}{1}\setcounter{question}{0}\nopagebreak 

  }
\def\qu{

  \addtocounter{question}{1}\arabic{question})
  \setcounter{sousquestion}{1} }
\def\quskip{

  \bigskip
  \qu}
\def\squ{

  \settowidth{\lng}{\arabic{question})
  }\hspace{\the\lng}\alph{sousquestion}) \addtocounter{sousquestion}{1}} 
\def\qusqu{\qu\nopagebreak \vskip -1\baselineskip \squ}
\def\qusquskip{\quskip\nopagebreak \vskip -1\baselineskip \squ}

%%reference pour exos,squ \`a placer avant la question, qu est a placer apres
\def\labelexo#1{\expandafter\edef\csname refexo#1\endcsname {\Roman{exo}}}
\def\refexo#1{\csname refexo#1\endcsname}
\def\labelqu#1{\expandafter\edef\csname refqu#1\endcsname {\arabic{question})}}
\def\refqu#1{\csname refqu#1\endcsname}
\def\labelsqu#1{\expandafter\edef\csname refsqu#1\endcsname
  {\arabic{question}\alph{sousquestion})}} 
\def\refsqu#1{\csname refsqu#1\endcsname}  

%%%%%%%%%%fin de macros fiche d'exos
%%macros taille page
\newlength{\elargir}
\setlength{\elargir}{2.5cm}
\addtolength{\leftmargin}{-\elargir}
%%\addtolength{\hoffset}{-\elargir}
\addtolength{\oddsidemargin}{-\elargir}
\addtolength{\evensidemargin}{-\elargir}
\addtolength{\elargir}{\elargir}
\addtolength{\textwidth}{\elargir}
\addtolength{\textheight}{13\baselineskip}
\topmargin=-5\baselineskip
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%        
\everymath={\displaystyle}
\begin{document}
\noindent{\bf Universit\'e de Paris 7 \hfill \framebox{\Large \bf
    \hspace{ 0.2cm}TP17 Factorisation des Polyn\^omes\hspace{0.2cm}}\hfill   agreg 2011 (F.Han\footnote{http://www.math.jussieu.fr/$\sim$han/agreg})}\\
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\code#1{{\tt #1}}
%% 
\columnsep 0.7cm
\begin{multicols}{2}
\exo
finir TP16 ordre d'un element
\exotitre{M\'ethode de Horner}
On consid\`ere un polyn\^ome $P=\sum_{i=0}^n a_i.x^i$.
\qu Etudiez la fonction horner de votre logiciel.
\qu Cr\'eez une proc\'edure recevant la liste des coefficients et retournant une
forme de Horner 
\exo
{\it S\'eance de Cours sur les polyn\^omes.}
\exotitre{polyn\^ome modulaires}
\qu \danger Essayez \verb/rem(X^2+2*X+2,X^2+1);/  et
\verb/rem(x^2+2*x+2,x^2+1)/ 
et \verb/rem([1,2,2],[1,0,1])/. Que se passe t'il, comment y rem\'edier.
% restart;maple_mode(0);cas_setup(0,0,0,1,0,1e-10,10,[1,50,0,25],0,0,0); //radians,pas de cmplx, pas de  Sqrt
% rem(x^2+2*x+2,x^2+1);
% rem([1,2,2],[1,0,1]);
% rem(X^2+2*X+2,X^2+1); //X ne marche pas, il le fait en x. On pourra utiliser: ,X
% rem(X^2+2*X+2,X^2+1,X); //X ne marche pas, il le fait en x. On pourra utiliser: ,X
\qu Polyn\^omes et modulaires. En mode xcas on utilise \% . 
\squ Retrouver le quotient et le pgcd des polyn\^omes $X^6-1$ et $2X^3+5$ dans
$\rela/\rela 7[X]$ avec une syntaxe o\`u les polyn\^omes sont donn\'es avec  la variable \code{X}. 
% P:=X^6-1;Q:=2*X^3+5;
% factor(P % 7);
% quo(P % 7,Q % 7,X);
% gcd(P % 7 ,Q % 7); //Attention pas besoin de preciser la variable car c'est multivariable.
% Gcd(P % 7,Q % 7,X % 7);//ici ca fait le PGCD des 3 poly P,Q,X.
%%\squ Autre m\'ethode, plus naturelle: On cr\'ee des polyn\^omes \`a coefficients dans
%%$\rela/7\rela$, et ensuite on utilise les fonctions usuelles sur les
%%polyn\^omes. Pour rem\'edier au probl\`eme du \% en mode maple, Charger pari, et
%%utilisez une fonction pari pour cr\'eer l'\'el\'ement 
%%unit\'e de $\rela/7\rela$. (Cf documentation "conversion..."). Factoriser le
%%polyn\^ome $P=X^6-1 $ dans $\rela/7\rela[X]$. Quel est 
%%le reste de $P$ par $2X^3+5$.
%% pari();#On charge pari pour cr\'eer des objets modulaires avec Mod
%% P:=normal((X^6-1)*Mod(1,7));#mieux vaut multiplier pour basculer tous les coeffs
%% factor(P);
%% quo(P,2*X^3+5,X);
\squ Essayer: \verb/P:=X^6-1;/ \verb/Q1:=2*X^3+Mod(5,7);/ et
%P:=X^6-1;Q1:=2*X^3+5 % 7;Q2:=Q1*1 % 7;
\verb/Q2:=1 % 7*Q1/. Comparer \verb/quo(P,Q1,X)/ et \verb/quo(P,Q2,X)/.
%quo(P,Q1,X); // PB?: le 2 est reste dans Z. 
%quo(P,Q2,X);
%gcd(P,Q2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
\exotitre{Factorisation sans carr\'es}
%!s!<c>
%------------Exo factorisation sans facteurs carres---------------------------------------------------
%!s!
\qu
On consid\`ere des \'el\'ements de $\rela/3\rela[x]$  $a,b,c,d,e$ premiers entre eux
deux \`a deux, et sans facteurs multiples. On note $P=a.b^2.c^3.d^4.e^6$, et
$Q=a.b.d$.  
\squ Que repr\'esente $Q$ en fonction de $P$ et $P'$ dans $\rela/3\rela[x]$?
\squ Illustrer en utilisant des variables formelles $a,b,c,d,e$ comment obtenir
$a,b,d$ en partant de $P$ et $Q$. (On effectuera des op\'erations en ligne de
commande du type pgcd... et non un programme.) 
%purge(a,b,c,d,e);
% P:=a*b^2*c^3*d^4*e^6;
%Q:=a*b*d; //Q est P divise par le pgcd de P et P'
%T1:=P;V1:=Q;
%V2:=gcd(T1,V1);T2:=normal(T1/V2);
%V3:=gcd(T2,V2);T3:=normal(T2/V3);normal(V2/V3); //on obtient a
%V4:=gcd(T3,V3);T4:=normal(T3/V4);normal(V3/V4); //on obtient b
%V5:=gcd(T4,V4);T5:=normal(T4/V5);normal(V4/V5); //on obtient d
\squ Expliquer ensuite comment obtenir le polyn\^ome $c.e^2$, puis
comment en d\'eduire $c$ et $e$.
% !s!<c>
%On a obtenu le polynome T5=c^3e^6. Ce polynome en n'est autre que
%Q(x^3) ou Q=c.e^2. On recommence alors avec Q. (On obtient  c.e
%en divisant Q par le pgcd de Q et Q').
%!s!
%T6:=c*e^2;V6:=c*e;
%V7:=gcd(T6,V6);T7:=normal(T6/V7);
%V8:=gcd(T7,V7);T8:=normal(T7/V8);normal(V7/V8); //on obtient c
%V9:=gcd(T8,V8);normal(V8/V9); //on obtient e
\qusqu Cr\'eer une proc\'edure \code{facto1(P,p)} donnant pour chaque $i$ premier avec la
caract\'eristique $p$ le produit des facteurs irr\'eductibles de
multiplicit\'e $i$ dans $P$ o\`u $P$ est un polyn\^ome en \code{x}.
%!s!<p>
%facto1:=proc(P,p)
%local VV,T,V,k,L;
%P:=P % p; //Attention, il faut faire les divisions modp
%T:=gcd(P,diff(P,x));
%V:=quo(P,T);
%V:=gcd(P,V);T:=quo(P,V); 
%L:=[];
%k:=1;
%while(degree(V) > 0){ 
%VV:=V;V:=gcd(T,V); T:=quo(T,V);
%if degree(V)<degree(VV) then L:=[op(L),[quo(VV,V),k]]; fi;
%k:=k+1;
%};
%L;
%end;
%!s!
\squ Trouver un bon polyn\^ome pour tester \code{facto1}. (Par exemple 6
multiplicit\'es diff\'erentes, dont deux multiples de $p$, les facteurs multiples
n'\'etant pas tous irr\'eductibles.)
% factor((x^49-x) %  7); //On cherche des facteurs irred de degre 2 distincts pour connaitre la reponse.
% P:=normal((x+1)*(x^2-2*x+1)^2*(x+2)^3*(x^2+3*x-2)^3*x^7*(x^2-x-3)^7*(x^2-x-1)^9*(x^2-2*x-2)^14) % 7;
% factor(P); //On verifie que nos facteurs sont bien premiers entre eux.
%facto1(P,7);
\qu Cr\'eer \code{facto2} en modifiant la proc\'edure pr\'ecedente pour
obtenir aussi ceux de multplicit\'e multiple de $p$. 
%!s!<p>
%facto2:=proc(P,p)
%local VV,T,V,k,L,j;
%P:=P % p;
%T:=gcd(P,diff(P,x));
%V:=quo(P,T);
%T:=quo(P,V);
%L:=[];
%k:=1;j:=1
%while(degree(T)>0){
%while(degree(V) > 0){
%VV:=V;V:=gcd(T,V); T:=quo(T,V);
%if degree(V)<degree(VV) then L:=[op(L),[quo(VV,V) ,k]]; fi;
%k:=k+j;
%};
%//Attention pour poly2symb les coeffs sont dans l'ordre des degres decroissants
%j:=j*p;k:=j;T:=poly2symb([seq(coeff(T,ii*p),ii=degree(T)/p..1)],x);
%V:=quo(T,gcd(T,diff(T,x)));
%T:=quo(T,V);
%};
%L;
%end;
%!s!
%facto2(P,7);
\newpage
\end{multicols}

\end{document}

