
\'Ecrivons une fonction \texttt{divisible(n)} qui admet pour argument un entier naturel $n$ et qui affiche :
\begin{itemize}
\item \og divisible par 2 \fg{} si $n$ est pair,
\item \og divisible par 3 \fg{} si $n$ est divisible par 3,
\item \og divisible par 5 \fg{} si $n$ est divisible par 5,
\item \og divisible par 7 \fg{} si $n$ est divisible par 7.
\end{itemize}

Dans un premier temps, on serait tentés d'écrire :

\begin{python}
def divisible(n):
    if n % 2 == 0:
        return "Divisible par 2"
    if n % 3 == 0:
        return "Divisible par 3"
    if n % 5 == 0:
        return "Divisible par 5"
    if n % 7 == 0:
        return "Divisible par 7"
\end{python}

mais cette fonction ne convient pas. En effet, un nombre $n$ peut être divisible par plusieurs autres nombres (par exemple, 21 est divisible par 3 et par 7). Or, quand on demande à une fonction de retourner un résultat, elle cesse de fonctionner une fois que le résultat est retourné.

Ainsi, dans ce code, pour $n=21$, la fonction retourne \og Divisible par 3 \fg, car 3 est le premier diviseur de 21, mais n'exécute pas les tests suivants; donc \og Divisible par 7 \fg{} ne s'affiche pas.

\medskip

Il faut donc préférer \textit{afficher} le texte plutôt que le \textit{retourner}:

\begin{python}
def divisible(n):
    if n % 2 == 0:
        print( "Divisible par 2" )
    if n % 3 == 0:
        print( "Divisible par 3" )
    if n % 5 == 0:
        print( "Divisible par 5" )
    if n % 7 == 0:
        print( "Divisible par 7" )
\end{python}

L'énoncé disait d'ailleurs que la fonction devait \textit{afficher} quelque chose et non \textit{retourner} quelque chose.
