
Voici une suggestion, qui fait appel aux \textit{listes construites par compréhension}:

\begin{python}
L = [ 2*q+1 for q in range(50) ]
P = [ 3*q+2 for q in range(33) ]
Q = [ 5*q+4 for q in range(20) ]
N = [ n for n in L if n in P and n in Q ]
print( N )
\end{python}

\begin{console}
[29, 59, 89]
\end{console}

La liste \texttt{L} est construite en prenant tous les entiers naturels $q$ de 0 à 49 (\texttt{range(0,50}), et en ajoutant 1 à leur double. $2\times49+1=99$ et $2\times50+1=101>100$, ce qui justifie que l'on prend $q\leqslant49$.

Cette liste contient alors tous les entiers de 0 à 100 dont le reste est 1 dans la division euclidienne par 2.

\medskip

Vous l'aurez compris, les listes \texttt{P} et \texttt{Q} sont construites sur un modèle similaire par rapport aux conditions de l'énoncé sur les autres divisions euclidiennes.

\medskip

La liste \texttt{N} contient toutes les valeurs de $n$ dans \texttt{L} qui sont aussi dans les autres listes. C'est donc l'intersection des trois listes, et c'est ce que nous voulions.


Une autre suggestion est la suivante:

\begin{python*}
for n in range(101):
    if n%2 == 1 and n%3 == 2 and n%5 == 4:
        print(n)
\end{python*}

qui affiche les mêmes nombres (29, 59 et 89).

Ici, on fait une simple boucle pour parcourir tous les entiers naturels de 0 à 100, et on teste pour chacun d'eux leur reste dans la division euclidienne par 2, 3 et 5. S'ils coïncident avec ce que l'on veut, on les affiche.
