Le problème de Brocard consiste à trouver tous les couples d'entiers (n, m) qui vérifie la solution suivante :
\(n!+1 = m^2\)
Queston 1
Factorielle
La factorielle d'un entier naturel \(n\), noté \(n!\), est le produit des nombres entiers strictement positifs qui sont inférieurs ou égaux à \(n\).
Soit:
\(n! = 1×2×3×4×...×n\)
Ainsi :
\(0! = 1\), c'est un produit vide, donc égal à \(1\)
\(1! = 1\), c'est un produit avec \(1\) comme seul facteur.
\(2! = 1×2 = 2\)
\(3! = 1×2×3 = 6\)
\(4! = 1×2×3×4 = 24\)
La résolution du problème va demander de nombreux calculs de factorielle, ce qui risque d'être coûteux en temps : il est donc judicieux d'utiliser une variable pour enregistrer les valeurs intermédiaires.
Écrire la fonction factorielle qui prend en paramètre un nombre entier positif n et qui renvoie la factorielle de ce nombre, selon le principe suivant :
factorielle_mem est initialisé à [1] de sorte que \(0!\) est égal à factorielle_mem[0]
factorielle(n) fait plusieurs actions :
Elle remplit, si nécessaire, factorielle_mem avec une boucle.
Elle renvoie \(n!\) en utilisant factorielle_mem[n] qui sera donc de taille au moins n + 1 à la fin de l'appel.
Contraintes
Le module math est désactivé pour cet exercice.
Il est obligatoire de compléter au fur et à mesure la variable factorielle_mem.
Exemples
>>> factorielle(5)120>>> factorielle(10)3628800
###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Entrer ou sortir du mode "deux colonnes" (Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran" (Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Écrire la fonction brocard qui prend en paramètres deux nombre entier positif n_max et m_max qui renvoie les couples qui vérifient la relation de Brocard, avec n compris entre 0 et n_max et m compris entre 0 et m_max
>>> brocard(15,15)[(4, 5), (5, 11)]
Fonction chargée
Une version de la fonction factorielle est déjà chargée en mémoire.
###(Dés-)Active le code après la ligne # Tests (insensible à la casse) (Ctrl+I)
Entrer ou sortir du mode "deux colonnes" (Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran" (Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)