+Dans ce qui suit, on nomme $\Prem$ l'ensemble des nombres premiers.
+Depuis Euclide, on sait que $\Prem$ est de taille infinie.
+Fermat avait cru donner une formule ne générant que des nombres premiers.
+Il affirmait que pour tout $n \in \N$, le nombre
+\begin{eqnarray}
+F_n &= & 2^{2^n} +1
+\end{eqnarray}
+était premier. Or 641 divise $F_5$. Aujourd'hui, on pense que seuls
+les nombres de $F_0$ à $F_4$ sont premiers.
+
+\subsection{Distribution des nombres premiers parmi les entiers}
+
+Même si on ne connaît pas de formule permettant de construire tous les
+nombres premiers, tout n'est pas perdu puisque les nombres premiers
+ne sont pas si rares que cela. Le théorème suivant donne même
+la proportion approximative des entiers inférieurs ou égaux à
+$N$ qui sont premiers.
+\begin{Prop}[Théorème des nombres premiers]
+La fonction $\pi:\N \rightarrow \N$ associe
+à chaque nombre $N$ le nombre d'entiers inférieurs ou égaux à $N$ qui sont
+premiers, soit $\pi(N) = |\{p \le N | p \textrm{ premier}\}|$.
+Lorsque $N$ est grand, on a:
+\begin{eqnarray}
+\pi(N) &\approx& \dfrac{N}{\ln(N)}
+\end{eqnarray}
+\end{Prop}
+La preuve de ce théorème est d'un niveau très avancé et n'est pas reproduite
+ici.
+
+Pour obtenir un entier de 100 chiffres, il suffit de considérer
+$N= 10^{100}$. Si on choisit au hasard un nombre dans $\N_{N}^{*}$,
+la probabilité qu'il soit premier est:
+\begin{eqnarray*}
+\textrm{Prob}(n \textrm{ premier}) &\approx&
+ \dfrac{\dfrac{N}{\ln(N)}}{N} \\
+ &\approx&
+ \dfrac{1}{\ln(N)}
+\end{eqnarray*}
+Le tableau~\ref{Table:propPrem} donne une valeur approchée de
+cette probabilité pour quelques nombres de chiffres.
+Dans celui-ci:
+\begin{itemize}
+\item la seconde ligne n'impose aucune restriction sur le dernier chiffre;
+\item la troisième ligne impose que le dernier chiffre soit dans
+ $\{1,3,5,7,9\}$: il est inutile de vérifier que les
+ multiples de 2 sont premiers!
+\item la quatrième ligne impose que le dernier chiffre soit dans $\{1,3,7,9\}$:
+ les multiples de 5 ne sont pas premiers!
+\end{itemize}
+On constate que si l'on tire au hasard un nombre (même de 100 chiffres),
+parmi ceux qui se terminent par $\{1,3,7,9\}$ (ensemble noté $B$ par la suite)
+la probabilité qu'il soit premier n'est pas infime. La solution au problème
+de génération de nombres premiers repose sur la capacité ou non a disposer
+d'un test efficace de primalité pour des grands nombres.
+
+%% Attention ce tableau est généré par ailleurs
+\begin{table}[ht]
+\begin{center}
+\begin{tabular}{|l|l|l|l|l|l|l|l|l|l|l|}
+ \hline
+Nombre de chiffres & \textbf{75}& \textbf{100}& \textbf{125}& \textbf{150}& \textbf{175}& \textbf{200}& \textbf{225}& \textbf{250}& \textbf{275}& \textbf{300}\\
+\hline
+Dernier chiffre quelconque & 172& 230& 287& 345& 402& 460& 518& 575& 633& 690\\
+\hline
+Dernier chiffre impair & 86& 115& 143& 172& 201& 230& 259& 287& 316& 345\\
+\hline
+Dernier chiffre dans $\{1,3,7,9\}$& 69& 92& 115& 138& 161& 184& 207& 230& 253& 276\\
+\hline
+ \end{tabular}
+\end{center}
+\caption{Probabilités inverse d'obtenir un nombre premier \label{Table:propPrem}}
+\end{table}
+
+
+On considère comme expérience aléatoire le fait de tirer un nombre au hasard
+dans $B$. On a une probabilité $p$ que le nombre soit premier.
+Soit $X$ la variable aléatoire qui compte le nombre
+de fois où l'on a réalisé cette expérience avant d'obtenir un nombre premier.
+$X$ suit une loi géométrique de paramètre $p$:
+\[
+P(X=k) = (1-p)^{k-1}p.
+\]
+Or l'espérance d'une variable aléatoire
+suivant une loi géométrique de paramètre $p$ est $\frac{1}{p}$.
+Pour 100 chiffres, il faudra en moyenne 92 tirages pour générer un
+nombre premier.
+
+Il \og reste \fg{} à fournir une méthode efficace pour décider
+de la primalité d'un entier, ce que présente la section suivante.
+
+
+\subsection{Tests de primalité}
+Chaque section donne un algorithme permettant de décider si un entier $p$ fourni
+en entrée est premier ou non.
+
+\subsubsection{Méthode naïve}
+On vérifie s'il est divisible par l'un des entiers pairs compris entre 2 et
+$\sqrt{p}$. Si la réponse est négative, alors $p$ est premier,
+sinon il est composé. Pour améliorer la performance de cette méthode, on peut
+calculer à l'avance une liste des nombres premiers inférieurs à $\sqrt{p}$
+(avec un crible d'Ératosthène), pour ne tester que ceux-ci.
+
+Par exemple, pour tester un nombre inférieur à 39 000,
+il suffit de vérifier qu'il n'est pas multiple d'un nombre premiers inférieur
+à 198 (car $198^2 = 39 204$); on doit faire au maximum 45 divisions.
+
+\subsubsection{Tests probabilistes}
+
+% \begin{Prop}[Corrolaire du petit théorème de Fermat]
+% Si $p$ est un nombre premier et $a$ un entier non divisible par $p$,
+% alors $a^{p-1}-1$ est un multiple de $p$, c'est-à-dire:
+% \begin{equation}
+% \forall a\in \N \forall p \in \N ( p \in \Prem \textrm{ et } a \not\equiv 0[p]
+% \Rightarrow a^{p-1}\equiv 1 [p]).
+% \label{petittheremeFermat}
+% \end{equation}
+% \end{Prop}
+
+
+\paragraph{Test de Fermat.}
+Le petit théorème de Fermat est une implication et non pas une équivalence:
+\begin{itemize}
+\item si on prend un $p\in \N$ et un $a \in\N$ quelconque,
+ alors si $p$ est premier et $a$ non divisible par $p$, alors on peut en déduire que $a^{p-1}\equiv 1 [p]$;
+\item rien ne dit que si on a $a^{p-1}\equiv 1 [p]$, alors $p$ est premier et $a$ non divisible par $p$.
+\item rien ne dit non plus que que si on a $a^{p-1}\equiv 1 [p]$ et que $a$ non divisible par $p$, alors $p$ est premier.
+\end{itemize}
+Cependant si on effectue un grand nombre de fois l'expérience de choisir
+$a \in \N_{n-1}^{*}$ et qu'à chaque fois on établit $a^{p-1}\equiv 1 [p]$,
+alors $p$ est probablement premier.
+Cependant ce n'est pas toujours le cas: par exemple $2^{340} \equiv 1 [341]$ et
+pourtant $341 = 11 \times 31$.
+
+\begin{Exo}
+Donner le code de la fonction \verb+testPrimaliteFermat(n,t)+ qui retourne
+\verb+True+ si \verb+t+ evaluations de $\texttt{a}^{\texttt{n}-1}$ ont retourné $ 1 [\texttt{n}]$
+pour un $a \in \N_{n-1}^{*}$ et \verb+False+ sinon.
+\end{Exo}
+
+
+
+\paragraph{Test de Miller-Rabin}
+
+Soit $n$ un nombre premier impair,
+alors nous pouvons écrire $n - 1$ comme $2^s \times d$,
+où $s$ est un entier et $d$ est impair.
+Alors, pour tout entier naturel $a \in \N_{n-1}^*$
+tel que $a$ est premier avec $n$,
+une des conditions suivantes doit être vérifiée:
+\begin{enumerate}
+\item $a^{d} \equiv 1 [n]$, ou bien
+\item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$.
+\end{enumerate}
+La preuve de cette propriété est admise
+
+Le test de primalité de Miller-Rabin est basé sur les équations précédentes.
+Si on choisit un grand nombre $t$ de fois $a \in \N_{n-1}^*$
+et qu'on obtienne à chaque fois
+\begin{itemize}
+\item $a^{d} \equiv 1 [n]$ ou
+\item $a^{2^r\cdot d} \equiv -1 [n]$ pour un certain $0 \le r \le s-1$,
+\end{itemize}
+alors le nombre $n$ est probablement premier.
+Dans le cas contraire ($a^{d} \not\equiv 1 [n]$ et
+$a^{2^r \cdot d} \not\equiv -1 [n]$ pour tous les $0 \le r \le s-1$),
+$n$ n'est pas premier.
+
+\begin{Exo}
+Donner le code de la fonction \verb+testPrimaliteMillerRabin(n,t)+.
+\end{Exo}
+