# Activité 3 - Nombre de chiffres d'un nombre donné¶

## Présentation de l'activité¶

- Référence au programme :
  - Seconde: Déterminer la première puissance d’un nombre positif donné supérieure ou inférieure à une valeur donnée.
- Description : activité de décompte du nombre de chiffres d'un nombre fixé permettant de faire travailler la notion de puissance et de faire réfléchir sur la notion de base.

## Cas général¶

Dans cette partie, on cherche à écrire un programme qui détermine le nombre de chiffres de l’écriture décimale d’un entier naturel. Pour cela, on remarque que $10^n$ a exactement $n+1$ chiffres.

Suggestions pédagogiques

- Mathématiques débranchées

  De combien de chiffres est constituée l'écriture d'un nombre entier $a$ tel que $10^4\leqslant a < 10^5$ ? tel que $10^n\leqslant a < 10^{n+1}$ ?

La fonction `nombreChiffres` prend en paramètre un entier naturel $a$ non nul et renvoie l’exposant de la plus petite puissance de $10$ ($\geqslant 1$) strictement supérieure au nombre $a$ (cela correspond au nombre de chiffres de $a$).

In [6]:

    def nombreChiffres(a):
        n = 0
        while 10**n <= a:
            n = n+1
        return n
    puissance(109)

Out[6]:

    3

Suggestions pédagogiques

- Expliquer un programme

  À quelle condition s'arrête la boucle while ? À quoi servent les lignes 2 et 4 ?

- Compléter un programme

  Le programme précédent étant fourni en remplaçant les lignes 2, 3 et 4 par `n=...`, `while ...` et `n=...`, demander aux élèves de compléter les lignes 2, 3 et 4.

- Écrire un programme

  Écrire une fonction prenant en entrée un entier $a$ et renvoyant l'exposant de la plus petite puissance de $10$ strictement supérieure à $a$.

Remarque
On peut ajouter une ligne au début de la fonction pour vérifier que $a$ est un entier strictement positif: `assert type(a)==int and a>0,'Attention a doit etre un entier positif'`

## Cas des puissances de $2$¶

Comme application, on cherche maintenant à connaître le nombre de chiffres des puissances de $2$.

Suggestions pédagogiques

- Tester un programme

  En utilisant le programme `nombreChiffres`, déterminer le nombre de chiffres des nombres $2^{10}$, $2^{64}$ et $2^{100}$ .

In [7]:

    nombreChiffres(2**10), nombreChiffres(2**64), nombreChiffres(2**100)

Out[7]:

    (4, 20, 31)

Suggestions pédagogiques

- Tester un programme

  Calculer $2^{10}$ et dire si le dernier résultat est cohérent.

Réponse
$2^{10}\simeq 10^3$, on peut donc avoir l'idée que $2^{100}=(2^{10})^{10}$ sera estimé par $(10^3)^{10}=10^{30}$. On retrouve les $30$ chiffres annoncés.

## Représentation du nombre de chiffres des puissances de $2$¶

Dans cette partie, nous cherchons à représenter l'évolution du nombre de chiffres des puissances de $2$.

In [13]:

    %matplotlib inline
    import matplotlib.pyplot as plt

Afin de représenter l'évolution du nombre de chiffres des puissances de $2$, nous allons placer au fur et à mesure les points $(i,2^i)$ pour $i$ parcourant les $n$ premiers entiers ($n$ variables fixées).

In [26]:

    n = 100

    for i in range(n):
        plt.plot(i,nombreChiffres(2**i),'c.')

    plt.grid(True)
    plt.show()

Suggestions pédagogiques

- Décrire

  Qu'est-ce qui explique la forme «en escalier» de cette représentation graphique ? Quelle est la forme approximative de cette courbe ?

- Compléter un programme

  Le programme précédent étant fourni en remplaçant la ligne 4 par `plt.plot(i,...,'c.')`, demander aux élèves de compléter la ligne 4.