
Voici un programme Python possible :

\begin{python}
for p in range(1,11):
    n = 10**p # 10 exposant p
    u = (1+1/n)**n
    print(u)
\end{python}

%Nous avons la chance d'avoir la formule explicite de $u_n$, donc il suffit de remplacer $n$ par successivement $10$, $10^2$, $10^3$, $10^4$ et $10^5$. On construit donc une boucle sur l'exposant de 10.

Ce programme retourne :

\begin{console}
2.5937424601000023 
2.7048138294215285 
2.7169239322355936 
2.7181459268249255 
2.7182682371922975 
2.7182804690957534 
2.7182816941320818 
2.7182817983473577 
2.7182820520115603 
2.7182820532347876 
\end{console}

\medskip

On constate alors que les termes semblent se rapprocher d'un nombre, dont la valeur approchée au millième est $2,718$.

\bigskip

En revanche, pour $p=15$, le programme retourne la valeur \texttt{3.035035206549262}.

Si $p=20$, le programme affiche \og \texttt{1} \fg.

\bigskip

La raison est que pour $n=10^{20}$, le programme arrondit le résultat de $\dfrac{1}{n}$ à 0 (car il y a trop de \og 0 \fg{} après la virgule dans le résultat mathématique), ce qui implique que le programme arrondit le résultat de \og $1+\dfrac{1}{n}$ \fg{} à 1, et donc le résultat de \og $\left(1+\dfrac{1}{n}\right)^n$ \fg{}  à $1^{n}=1$.

\medskip

Quant au résultat retourné pour $p=15$, on constate que si l'on demande d'afficher la valeur de \og $1+\dfrac{1}{n}$ \fg, il s'affiche \og \texttt{1.000000000000001} \fg{} et la façon dont Python calcule ce nombre à l'exposant 15 semble erronée (méthode trop compliquée à expliquer ici).
