Labo Sud des Landes Formation algorithmique et programmation - Blogpeda

La page est créée Éric Michel
 
CONTINUER À LIRE
Labo Sud des Landes Formation algorithmique et programmation - Blogpeda
Labo Sud des Landes
Formation algorithmique et programmation

                  algoprog.fr
Labo Sud des Landes Formation algorithmique et programmation - Blogpeda
Sommaire

1 Listes et matplotlib en Première                                                                                                                                        2
  1    Listes en extension . . . . . . . . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
  2    Listes par ajouts successifs . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
  3    Listes en compréhension . . . . . . . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
  4    Suites et listes . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
       4.1    Suites définies par récurrence . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
       4.2    Suites définies par une formule explicite           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
  5    Représentation graphique avec matplotlib . . .             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
       5.1    Utilisation du module pyplot . . . . . . .          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
       5.2    Premiers tracés . . . . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
       5.3    La conjecture de Syracuse . . . . . . . . .         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
       5.4    La suite de Fibonacci . . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7

2 Probabilités et Statistiques                                                                                                                                             9
  1   Simuler le hasard . . . . . . . . . . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      1.1    Situations d’équiprobabilités . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
      1.2    Sans équiprobabilité . . . . . . . . . . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
  2   Espérance et variance d’une variable aléatoire          .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11

3 Un problème d’arithmétique non résolu                                                                     12
  1   Persistance d’un nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
  2   La persistance multiplicative des nombres en base 10 . . . . . . . . . . . . . . . . . . . . . . 12

                                                         1
Labo Sud des Landes Formation algorithmique et programmation - Blogpeda
Chapitre 1
                      Listes et matplotlib en Première

    Plan du chapitre
            1   Listes en extension . . . . . . . . . . . . . . . . . . . . .      .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
            2   Listes par ajouts successifs . . . . . . . . . . . . . . . .       .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
            3   Listes en compréhension . . . . . . . . . . . . . . . . .          .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3
            4   Suites et listes . . . . . . . . . . . . . . . . . . . . . . . .   .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
                4.1    Suites définies par récurrence . . . . . . . . . . .         .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
                4.2    Suites définies par une formule explicite . . . . .          .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   4
            5   Représentation graphique avec matplotlib . . . . . . .             .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
                5.1    Utilisation du module pyplot . . . . . . . . . . . .         .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
                5.2    Premiers tracés . . . . . . . . . . . . . . . . . . . .      .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   5
                5.3    La conjecture de Syracuse . . . . . . . . . . . . . .        .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   6
                5.4    La suite de Fibonacci . . . . . . . . . . . . . . . . .      .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   7
    Retour au sommaire

                                   elt 0 elt 1 elt 2 elt 3 elt 4 elt 5                                           éléments

                                     0        1        2        3        4              5                        indices

    1 Listes en extension

    Exercice 1 : automatismes
    http://algoprog.fr/06-qcm/qcm.php?contenu=10&titre=Listes en extension

    Exercice 2 : accès aux éléments d’une liste
    Créons deux listes dans la console :
   >>> chiffres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
   >>> jours = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]

    Compléter le tableau suivant (on peut vérifier à l’aide de la console).

       Instruction à saisir              Résultat
         dans la console
     chiffres[0]
     chiffres[2]
                                                                             −6         −5               −4          −3              −2              −1
                                  Lundi
                                  Jeudi
     chiffres[-1]                                                            0           1               2               3               4           5
     chiffres[-2]
                                  Dimanche
                                  Samedi

                                                                2
2 Listes par ajouts successifs

    Exercice 3 : automatismes
    http://algoprog.fr/06-qcm/qcm.php?contenu=11&titre=Listes par ajouts successifs

    Exercice 4 :
    Saisir dans la console la liste : chiffres = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10].
    a. Ajoutez-lui maintenant l’élément 11 en fin de liste.
    b. Utiliser une boucle pour compléter la liste jusqu’à 30.

    Exercice 5 :
    Il sera souvent utile de commencer par créer une liste vide :

   liste = []

    Nous pourrons ensuite lui ajouter les éléments souhaités par la méthode append.
    Utiliser ce mécanisme pour créer, par ajouts successifs, la suite des nombres pairs de 0 à 100.

    3 Listes en compréhension

    Exercice 6 : automatismes
    http://algoprog.fr/06-qcm/qcm.php?contenu=12&titre=Listes en compréhension

    Exercice 7 : créer des listes en compréhension
      1. Créer la liste des entiers de 1 à 100.
      2. Créer la liste des entiers pairs de 0 à 50.
      3. Créer la liste des multiples de 13 inférieurs à 300.
      4.    a. Créer la liste des cubes des entiers inférieurs à 15.
            b. Adapter la liste précédente afin de ne garder que les cubes des entiers impairs.
      5. Créer une liste de nombres aléatoires de 20 lancers d’un dé à 6 faces parfaitement équilibré.

                                                         3
4 Suites et listes
    Une suite u peut être perçue comme l’ensemble des termes u n qui la composent : {u n , n ∈ N}.
    Il sera souvent intéressant de stocker les premiers termes de la suite considérée dans une liste :

   liste = [u0, u1, u2, u3, u4, u5, u6, u7, u8, u9, u10, ...]

    Ce procédé permet un accès aisé aux termes de la suite.

    4.1 Suites définies par récurrence
    La méthode de création par ajout successifs est particulièrement pratique pour ce type de suites.

    Exercice 8 : une suite arithmétique
    a. Créer, par ajouts successifs, la listes des 20 premiers termes de la suite définie par :
                                                (
                                                 u0 = 0
                                                 u n+1 = u n + 7 pour n ≥ 1

        Indication : pour une suite définie par récurrence, les indices négatifs simplifient beaucoup les choses.
    b. Quelle est la nature de la suite u ?
     c. En termes de multiples ou de diviseurs, que dire la suite u ?

    Exercice 9 : une suite géométrique
    Un particulier place l’année 0 sur un compte la somme de 10 000 e. Il perçoit chaque année des intérêts
    s’élevant à 3% de la somme présente sur le compte.
    Objectif : déterminer l’année à partir de laquelle il disposera de 20 000 e.
    a. Quels outils autres outils que Python permettraient de traiter ce problème plus rapidement ?
        Nous traiterons cependant ce problème avec Python afin de mettre en place certaines méthodes qui
        seront utiles par la suite.
    b. Définir une suite (u n )n∈N représentant les montants successifs de la somme présente sur le compte.
     c. Quelle est la nature de cette suite ?
    d. Écrire une fonction "placement(n)", renvoyant la liste des montants présents sur le compte, de
       l’année 0 jusqu’à l’année n.
        Indication : on pourra penser aux indices négatifs .
     e. Utiliser cette fonction pour déterminer à partir de quelle année cette personne disposera de 20 000e.

    4.2 Suites définies par une formule explicite
    La méthode de création en compréhension s’avère très pratique pour ce type de suite.

    Exercice 10 : une suite définie par une formule explicite
    Soit (u n )n∈N la suite définie pour tout entier naturel n par :

                                                               1
                                                      un =
                                                             n2 + 1
       1. Créer la liste de ses 20 premiers termes.
       2. Conjecturer sa limite lorsque n tend vers +∞.

                                                             4
5 Représentation graphique avec matplotlib
5.1 Utilisation du module pyplot
   • Le module pyplot de la librairie matplotlib permet d’obtenir rapidement la représentation gra-
     phique des premiers termes d’une suite, stockés au préalable dans une liste.

   • La représentation graphique s’obtient en 3 étapes :
         1. Importation du module pyplot :

            from matplotlib import pyplot

         2. Tracer la représentation graphique de "ma_liste" :

            pyplot.plot(ma_liste, ’r.’)
            # r. : points tracés en rouge, sous forme de points
            # bo : points tracés en bleu, sous forme de ronds
            # g+ : points tracés en vert, sous forme de croix
            # r : tracé continu, en rouge

         3. Affichage du graphique :

            pyplot.show()

   • Où est donc affiché mon graphique ?
         1. dans EduPython :
            EduPython a le mauvais goût d’ouvrir, derrière l’éditeur Python, une nouvelle fenêtre
            avec le graphique. Pour voir le graphique, réduire la fenêtre de l’éditeur.
         2. dans Spyder avec une console IPython :
            le graphique s’affiche directement dans la console.

5.2 Premiers tracés
Exercice 11 : représentation graphique d’une première suite
Soit u la suite définie par :
                                          ½
                                              u 0 = 0, 5
                                              u n+1 = u n (1 − u n )
   1. Créer la liste de ses 50 premiers termes.
   2. Représenter graphiquement la suite pour n ≤ 50.
   3. Conjecturer sa limite lorsque n tend vers +∞.

Exercice 12 : une version plus générale
On reprend la suite u de l’exercice précédent.
   1. Écrire une fonction suite(n) :
        • prenant en argument un entier n,
        • renvoyant la liste de ses n premiers termes.
   2. Écrire une fonction represente(n) :
        • prenant en argument un entier n,
         • et affichant la représentation graphique des n premiers termes de la suite.

                                                       5
5.3 La conjecture de Syracuse
Exercice 13 : la conjecture de Syracuse
On appelle suite de Syracuse (1) une suite définie par :

                                      u0 ∈ N u
                                     
                                     
                                                 n
                                       u n+1 =          , si u n est pair,
                                     
                                               2
                                       u n+1 = 3u n + 1 , si u n est impair.

Si une telle suite atteint le nombre 1, alors la suite de ses valeurs répète indéfiniment le cycle : 1, 4, 2.
   1. Vérifier cette dernière affirmation.

Conjecture de Syracuse ou de Collatz (2) :
hypothèse, à ce jour non démontrée, selon laquelle :
quelque soit le premier terme u 0 choisi, une suite de Syracuse fini toujours par atteindre le nombre 1.

Vocabulaire :
   • le vol est l’ensemble des valeurs de la suite jusqu’à atteindre 1 pour la première fois,
   • l’altitude maximum est la valeur maximum de la suite,
   • le temps de vol est le plus petit indice n tel que u n = 1.

Exemple :
Voici ci-dessous le vol lorsque u 0 = 15 :

                        15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 . . .

   2. Créer une fonction suivant(n), renvoyant le terme suivant de la suite, lorsque l’actuel vaut n.
   3. Créer une fonction vol(n), renvoyant la liste des premiers termes de la suite de premier terme n,
      jusqu’à atteindre 1.
   4. Créer une fonction altitude_max(n), renvoyant l’altitude maximum du vol.
   5. Créer une fonction temps_vol(n), renvoyant le temps de vol.
   6. Créer une fonction representation_vol(n), affichant la représentation graphique du vol de la
      suite de premier terme n.
   7. Tester avec différentes valeurs de n : 27, 1033 . . .

(1). https://fr.wikipedia.org/wiki/Conjecture_de_Syracuse
(2). https://fr.wikipedia.org/wiki/Lothar_Collatz

                                                            6
5.4 La suite de Fibonacci
Exercice 14 : la suite de Fibonacci
      La suite de Fibonacci (3) modélise la croissance d’une population de lapins. Elle doit son nom au
mathématicien italien Leonardo Fibonacci (4) .
      Dans un problème récréatif, posé dans l’ouvrage Liber abaci publié en 1202, Fibonacci décrit la
croissance d’une population de lapins :

     Un homme met un couple de lapins, dans un lieu isolé de tous les côtés par un mur. Combien
     de couples obtient-on en un an, si chaque couple engendre tous les mois un nouveau couple,
     à compter du troisième mois de son existence ? ».

     Le schéma ci-dessous permet de mieux comprendre la situation : on remarque en particulier
qu’un couple de lapins est en âge de procréer (en rouge et bleu), à partir de son second mois d’exis-
tence.
     Il donne ainsi naissance à de nouveaux couples de lapins à partir de son troisième mois d’exis-
tence.

Appelons :
 • F 0 le nombre de couples présents le mois 0,
 • F 1 le nombre de couples présents le mois 1,
 • F n le nombre de couples présents le mois n.

Partie A : la liste des premiers termes
 a. Déterminer les valeurs de F 0 et F 1 .
b. Déterminer l’expression de F n+2 en fonction de F n+1 et F n . Justifier à l’aide d’une phrase en français.
 c. Écrire une fonction fibonacci(n) renvoyant la liste des n + 1 premiers termes de la suite de Fibo-
    nacci.
d. Utiliser cette fonction pour répondre au problème posé en introduction.

(3). https://fr.wikipedia.org/wiki/Suite_de_Fibonacci
(4). https://fr.wikipedia.org/wiki/Leonardo_Fibonacci

                                                        7
Partie B : un algorithme de seuil
a. On souhaite désormais écrire une seconde fonction, seuil(k), faisant appel à la fonction fibonacci,
   et renvoyant le premier mois n, où le nombre de couples de lapins dépasse la valeur k.
    (on supposera : k > 1).
b. En déduire le premier mois où le nombre de couples dépassera 500 000.

Partie C : la suite des rapports
La suite des rapports successifs de la suite de Fibonacci est définie par :

                                                   F n+1
                                                 µ       ¶

                                                    F n n∈N

L’objectif de cette partie est d’émettre une conjecture sur la limite éventuelle de la suite des rapports.
a. Écrire une fonction rapport_fibonacci(n) renvoyant la liste des n premiers rapports.
b. Émettre une conjecture quant à la limite éventuelle de la suite des rapports.
 c. Préciser le résultat proposé en utilisant les liens donnés en bas de page précédente (ou d’autres. . . ).
d. Écrire une fonction represente_rapport_fibonacci(n), représentant les n premiers termes de la
   suite des rapports.

                                                     8
Chapitre 2
                            Probabilités et Statistiques

    Plan du chapitre
            1   Simuler le hasard . . . . . . . . . . . . . . . . . . . . . .   .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
                1.1   Situations d’équiprobabilités . . . . . . . . . . . .      .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .    9
                1.2   Sans équiprobabilité . . . . . . . . . . . . . . . . .     .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   10
            2   Espérance et variance d’une variable aléatoire . . . . .        .    .    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   11
    Retour au sommaire

    1 Simuler le hasard
    1.1 Situations d’équiprobabilités
    La fonction randint(a, b), de la librairie random, renvoie un nombre entier aléatoire, compris entre a
    et b, avec des probabilités égales pour chaque entier :

   from random import randint

   nombre_aleatoire = randint(a,b)

    Exercice 15 : lancers de dé
    a. Écrire une fonction lancer() simulant un lancer de dé.
    b. Écrire une fonction frequence_6(n) simulant n lancers consécutifs et renvoyant la fréquence de 6
       obtenue.

    Exercice 16 : jeu de hasard
    Un jeu consiste à lancer 10 fois de suite une pièce équilibrée. Pour gagner, il faut obtenir 5 piles.
    On souhaite dans cet exercice estimer la probabilité de gagner.
    a. Écrire une fonction partie() :
       • réalisant 10 lancer d’une pièce équilibrée,
       • et renvoyant le nombre de pile obtenus.
    b. Écrire une seconde fonction echantillon_partie(n) :
       • réalisant un échantillon de n parties de ce jeu,
       • et renvoyant la fréquence des parties gagnées.

                                       Population des parties
                                       probabilité p de gagner inconnue

                                                   Échantillon de parties
                                                          n
                                                           f

     c. Proposer une estimation à deux décimales de la probabilité de gagner. On veillera à choisir n suffi-
        samment grand pour stabiliser les fréquences observées dans les échantillons.

                                                              9
1.2 Sans équiprobabilité
Exercice 17 : simuler le hasard avec la fonction random()
Jusqu’ici, pour générer des nombres aléatoires, nous n’avons utilisé que la fonction randint. Remar-
quons que cette fonction renvoie :
    • un nombre aléatoire entier,
    • avec des probabilités égales pour chacun des entiers compris entre a et b.

En dehors des situations d’équiprobabilité, nous pouvons exploiter la fonction random(), pour obtenir
des probabilités différentes pour les différentes issues.

a. Importer dans la console la fonction random() depuis la librairie random :

    >>> from random import random

b. Saisir plusieurs de suite dans la console l’instruction : >>> random(), et deviner ce qu’elle renvoie.

 c. Quelle est la probabilité pour un nombre aléatoire entre 0 et 1 d’être inférieur à 0,9 ?

                        0                                                            1
                        [                                                            ]
                                                                              0,9
                                                     0,9                         0,1
d. Quelles sont les deux valeurs que peut prendre l’expression : random() < 0.9 ?

e. Avec quelles probabilités sont prises chacune de ces deux valeurs ?

 f. Comment obtenir un nombre aléatoire prenant les valeurs :
    • True, avec la probabilité 0,3
    • False, avec la probabilité 0,7

g. Comment obtenir un nombre aléatoire prenant les valeurs :
    • True, avec la probabilité 0,49
    • False, avec la probabilité 0,51

Application : exercice 18 : familles de 3 enfants.

                                                      10
Exercice 18 : familles de trois enfants
En France, on estime que la proportion de filles parmi les naissances s’élève à 49%.
On souhaite estimer la probabilité, pour un couple projetant d’avoir 3 enfants, d’avoir au moins une
fille.
Nous représenterons, dans cet exercice, les filles par la valeur True, et les garçons par la valeur False.
a. Réaliser un schéma explicitant population et échantillon.
b. Écrire une fonction enfant() renvoyant :
    • True (fille), avec probabilité 0,49
    • False (garçon), avec probabilité 0,51
 c. Écrire une fonction famille() :
    • simulant trois naissances successives dans une famille (à l’aide de la fonction enfant()),
    • et renvoyant le nombre de filles parmi ces trois enfants.
d. Écrire une fonction echantillon_famille(n) :
    • constituant un échantillon de n familles (à l’aide de la fonction famille()),
    • et renvoyant la fréquence dans cet échantillon des familles ayant au moins une fille.
e. Proposer une estimation à deux décimales de la probabilité d’avoir au moins une fille pour une
   famille de trois enfants. On veillera à choisir n suffisamment grand pour stabiliser les fréquences
   observées dans les échantillons.

2 Espérance et variance d’une variable aléatoire

Exercice 19 : espérance et variance d’une variable aléatoire
On considère une variable aléatoire X ne prenant qu’un nombre fini de valeurs.
a. Écrire une fonction esperance(valeurs, probabilites) :
      • prenant en argument deux listes :
           • valeurs : contenant les valeurs prises par la variable aléatoire X,
           • probalites : contenant la liste des probabilités respectives de ces valeurs,
      • renvoyant l’espérance de la variable aléatoire X.
b. On lance un dé parfait et on définit la variable aléatoire X qui associe, à tout lancer, le résultat obtenu.
   Calculer l’espérance de X et vérifier que nous obtenons bien le même résultat à l’aide de la fonction
   esperance.
 c. Écrire une fonction variance(valeurs, probabilites), renvoyant la variance d’une variable aléa-
    toire X, définie tel que dans la question a..
d. En déduire la variance de la variable aléatoire définie à la question b..

                                                     11
Chapitre 3
         Un problème d’arithmétique non résolu

Plan du chapitre
        1    Persistance d’un nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   12
        2    La persistance multiplicative des nombres en base 10 . . . . . . . . . . . . . . . . . . . .        12
Retour au sommaire

1 Persistance d’un nombre
      La persistance d’un nombre (1) est le nombre d’étapes nécessaires pour atteindre un point fixe
lorsqu’on effectue par itérations successives une série d’opérations sur ce nombre.
     Pour obtenir la persistance multiplicative d’un nombre, on réalise le produit de ses chiffres, et on
recommence jusqu’à obtenir un nombre à un seul chiffre.
      Par exemple : 39 → 27 → 14 → 4. Donc la persistance multiplicative de 39 est 3.

      Actuellement, en base 10, on conjecture qu’il n’existe pas de nombre
dont la persistance multiplicative soit supérieure à 11.
      La plus ancienne mention connue de ce problème est un article de
Neil Sloane (2) publié en 1973. En 2013, Francesco De Comité a vérifié par
ordinateur tous les nombres jusqu’à 10500 . Dans son article Neil Sloane
mentionne une conjecture plus générale : pour toute base de numérota-
tion b, il existe une constante M (b) telle qu’aucun entier exprimé dans
cette base b n’a une persistance multiplicative supérieure à M (b).

2 La persistance multiplicative des nombres en base 10
   1. Écrire une fonction produit(n) :
        • prenant en argument un entier naturel n,
        • renvoyant le produit des chiffres qui le composent.
   2. Écrire une fonction persistance(n) :
        • prenant en argument un entier naturel n,
        • renvoyant la persistance de n.
   3. Écrire une fonction premier_persistance(p) :
        • prenant en argument une valeur de persistance p,
        • renvoyant le plus petit entier naturel de persistance p.
   4. Utiliser la fonction premier_persistance pour compléter le tableau suivant :

                                     p                          5                7               8

                      premier_persistance(p)

(1). https://fr.wikipedia.org/wiki/Persistance_d’un_nombre
(2). https://fr.wikipedia.org/wiki/Neil_Sloane

                                                          12
13
Vous pouvez aussi lire