Lycée Clemenceau MPSI 2020/2021
Option informatique - Devoir surveillé n1
Lundi 22 mars Durée : 1h
Les calculatrices sont interdites. Il est indispensable pour la bonne compréhension, de commenter et expliquer les fonctions demandées, même si celles-ci paraissent simples.
Il est possible (et même conseillé) d'écrire et d'utiliser des fonctions intermédiaires non demandées, à condition de bien préciser ce qu'elles font.
Ce sujet est constitué de 3 exercices. Il comporte 1 page.
Exercice A : Persistance d'un entier
Soitn∈N∗, on calcule le produitprod(n)de ses chires en base 10, puis le produit des chires de prod(n) dans son écriture en base 10 et on recommence l'application deprodjusqu'à obtenir un chire entre 0 et 9. Le nombre minimal de fois où on appliqueprodpour transformer nen un chire compris entre 0 et 9 est appelé persistance den.
1. Donner la persistance de 9, puis de 97, puis de 9575.
2. Ecrire une fonction récursive prod qui renvoie le produit des chires d'un entier écrit en base 10.
3. Ecrire une fonction récursive persi qui renvoie la persistance d'un entier naturel.
4. Ecrire une fonction persi5 qui renvoie le plus petit entier naturel de persistance 5.
Exercice B : Manipulation de listes
Les questions de cet exercice sont indépendantes.
1. Écrire une fonction sommeliste qui prend en entrée une liste d'entiers et renvoie la somme de ses termes.
2. Écrire une fonction premierneg qui prend en entrée une liste d'entiers et renvoie son premier terme strictement négatif (si un tel terme existe).
3. Écrire une fonction enumdecr qui prend en entrée un entier n et renvoie la liste [n ; n-1 ; n-2 ; ... ; 1 ; 0].
4. Écrire une fonction enumcroi qui prend en entrée un entier n et renvoie la liste
[0 ; 1 ; 2 ; ... ; n-1 ; n]. Cette fonction devra s'exécuter enO(n)opérations sans appeler la fonction List.rev.
Exercice C : Nombres d'Armstrong (d'après E3A 2008)
Un nombre d'Armstrong est un nombre qui est égal à la somme des cubes des chires de son écriture en base 10 ; par exemple153 est un nombre d'Armstrong puisque153 = 13+ 53+ 33.
Écrire un programme qui calcule tous les nombres d'Armstrong à trois ou quatre chires.
1