Fermat, PSI* 2016-17, TP info 1 TP1 : exercices d'oral type E3A PSI E3A PSI -épreuve de mathématiques et algorithmiques - modalités pratiques • 1h de passage • deux parties distinctes : une "standard" et une très orientée Python • C'est une épreuve maths + algorithmique, avec parfois des enjeux algorithmiques qui demandent un traitement n Je ne donne ici que des demi-planches, avec les sujets Python Déroulement souhaité pour le TP • Sujet 1 (diviseurs propres) : résolution et commentaires à suivre en groupe SVP, 30mn environ • Traitement du sujet 2 (matrices optimales) : on rééchit à la mise en route en commun, puis vous travaillez seuls - 30mn env. • Traitement du sujet 3 (codes creux) : résolution libre avec l'enseignant qui circule et un bilan nal. • Pour les rapides il y a des sujets de rab... Sujet 1 - Diviseurs propres d'un entier Les diviseurs propres d'un nature n sont les naturels strictement inférieurs à n et qui divisent n. Ainsi la liste des diviseurs propres de 100 est : 1,2,4,5,10,20,25,50. a. Écrire une fonction LDP qui pour n ∈ N renvoie la liste des diviseurs propres de n. b. Écrire une fonction SDP qui pour n ∈ N renvoie la somme des diviseurs propres de n (ex : pour n=100, cela doit renvoyer 117). c. Un nombre parfait est un nombre qui est égal à la somme de ses diviseurs propres. Écrire une fonction parfaits qui pour K ∈ N recherche les nombres parfaits inférieurs à K . Elle achera au fur et à mesure "p est parfait". d. Deux nombres sont dits amicaux lorsque chacun est égal à la somme des diviseurs propres de l'autre. Écrire une fonction amicaux qui pour K ∈ N recherche la liste des nombres amicaux p, q tels que p < q ≤ K . Elle renverra la liste des couples [p, q] trouvés. e. Tracer les couples (p, q) de nombres amicaux inférieurs à 10 000. Sujet 2 - Sous-matrices optimales a. Fabriquer une matrice A carrée de taille 9 et une matrice B carrée de taille 2, toutes les deux à coecients tirés aléatoirement entre 0 et 9. b. Pour deux matrices M et N de taille quelconque écrire une fonction d'arguments N et M renvoyant True si N est une sous-matrice de M , False sinon. c. Ecrire une fonction permettant de trouver la sous-matrice de A la plus proche de B au sens des moindres carrés (ie somme des carrés des composantes). L'exercice adoptait un découpage pour cette dernière question que je trouve non judicieux. Autant rester dans la logique de la question b... Sujet 3 - Codes creux Le code creux consiste à coder un vecteur sans les zéros qu'il comporte et qui constituent une information inutile pour certains calculs. Ce code comporte une première liste, formée des coordonnées non nulles et une seconde qui indique leur position. Par exemple le vecteur [1, 2, 0, 5, 8, 0, 0, 0, 7] donne en code creux [[1, 2, 5, 8, 7], [0, 1, 3, 4, 8]]. 2 Fermat, PSI* 2016-17, TP info a. Écrire une procédure permettant de coder un vecteur en code creux, puis une autre permettant de le décoder (énoncé rédigé ainsi, il y a une ambigüité... il est bond de la relever et de faire "au mieux"). b. Écrire une fonction réalisant le produit scalaire d'un scalaire et d'un vecteur en code creux. c. Écrire une fonction réalisant le produit scalaire (canonique) de deux vecteurs en code creux. d. Écrire une fonction réalisant la somme de deux vecteurs en code creux. Sujet de rab 1 : Crible d'Eratosthène On veut générer (sic !) la liste des nombres premiers. a. Créer une liste L30 formée de 31 valeurs True. b. Ecrire une fonction modifier(L,p) telle que si p = 0 le premier terme de L devient False, si p = 1 le second terme de L devient False, et sinon, le k-ième terme de L devient False dès que k est un multiple de p autre que p. Faire des tests. c. En écrivant une fonction premiers(n), générer (sic !) la liste des nombres premiers jusqu'à la valeur n. d. Dire si 823 417 est premier. e. [Question perso rajoutée :] idem avec 1 006 549 441. Sujet de rab 2 : Comptage des nombres de Josèphe A la liste des entiers naturels, on retire un nombre sur deux, puis un sur trois, et ainsi de suite à l'inni : (1, 2, 3, 4, 5, 6, 7, 8, . . . ) → (1, 3, 5, 7, 9, 11, 13, 15, . . . ) → (1, 3, 7, 9, 13, 15, 19, . . . ) → . . . a. Écrire une fonction retirer qui étant donnés une liste L et un indice i enlève les éléments de la liste dont le "rang" est un multiple de i (du moins est-ce la formulation du sujet : que lien faire entre le "rang" dont il est question et l'indice... ?) b. Indiquer comment obtenir tous les nombres de Flavius Josèphe entre 1 et 100. c. Écrire une fonction FlaviusJosephe qui pour n ∈ N∗ renvoie tous les nombres de Flavius Josèphe inférieurs à n. d. Écrire une fonction U qui pour n ∈ N∗ renvoie le nombre Un de nombres de Flavius Josèphe inférieurs à n. e. Peut-on penser que la suite de terme général 4n 2 Un converge ? Si oui conjecturer sa limite `. f. Écrire une procédure donnant le premier n tel que | U4nn2 − `| ≤ 10−3 .