
Expliquons pas à pas chaque ligne du programme:
\begin{itemize}
\item \texttt{def mystere(n):}

Une fonction est ici définie: elle admet pour \og variable \fg{} \texttt{n} (on dit que c'est un \textit{argument} de la fonction Python).

\item \texttt{for i in range(2,n):}

\og \texttt{for} \fg{} désigne une \textit{boucle itérative} (\og Pour \fg). Ici, la variable \texttt{i} va prendre ses valeurs dans \texttt{range(2,n)}, c'est-à-dire dans la liste \texttt{[2,3,4,...,n-1]}. Donc \texttt{i} vaudra successivement 2, 3, 4, etc. jusqu'à \texttt{n-1}.

\item \texttt{if a \% i == 0:}

À chaque itération, c'est-à-dire à chaque fois que \texttt{i} prendra une nouvelle valeur, on teste si le reste de la division euclidienne de \texttt{n} par \texttt{i} vaut \og 0 \fg, c'est-à-dire si \texttt{n} est divisible par \texttt{i}. Si c'est le cas, on exécute l'instruction suivante (à savoir : \og \texttt{return False} \fg. La fonction renvoie donc ici \og \texttt{False} \fg{} si \texttt{n} est divisible par \texttt{i}.

\item \texttt{return True}

Cette instruction est en dehors de la boucle itérative \og \texttt{for i in range(2,0)} \fg{} : elle s'exécute donc si on sort de la boucle, c'est-à-dire si la fonction n'a pas renvoyé \og \texttt{False} \fg.
\end{itemize}

À la vue de tout ceci, on peut alors dire que la fonction renvoie \og \texttt{False} \fg{} s'il existe un diviseur de l'argument \texttt{n}, et renvoie \og \texttt{True} \fg{}  dans le cas contraire.

Ce programme teste donc si \texttt{n} est un nombre premier: elle renvoie \og \texttt{True} \fg{} si c'est le cas, et \og \texttt{False} \fg{} dans le cas contraire.
