École des Mines de Douai – FI 1A TD d’Algorithmique et Programmation TD d’Algorithmique et Programmation 2 École des Mines de Douai – FI 1A Exercice 1 : Nombre parfait Un nombre entier n > 2 est dit parfait s’il est égal à la somme de tous ses diviseurs stricts, 1 compris. Écrire une fonction permettant de tester si un nombre donné est parfait ou non. Exercice 2 : Crible d’Eratosthène Cet algorithme permet de trouver tous les nombres premiers d’un intervalle [1, n]. L’intervalle est parcouru et les nombres qui ne sont pas premiers sont éliminés successivement. Le plus petit nombre premier étant 2, tous les multiples de 2 sont rayés de l’intervalle [1, n]. Le premier nombre strictement supérieur à 2 qui n’a pas été rayé est lui même premier. Il s’agit de 3 ; tous les multiples de 3 (à l’exception de lui même) peuvent donc être rayés. Le nombre premier suivant à n’avoir pas été rayé est 5. √ L’algorithme peut s’arrêter lorsque l’on s’apprête à rayer √ les multiples de p > n puisque tout nombre non premier plus petit que n a un diviseur premier inférieur ou égal à n. 1. Comment modéliser l’intervalle [1, n] ? (Comparer les différentes modélisations possibles afin de trouver celle qui nécessitera le moins de manipulations) 2. Écrire une méthode mettant en œuvre le crible d’Eratosthène. Exercice 3 : Coefficients binomiaux et formule de Pascal La formule de Pascal est une récurrence double permettant de calculer Cnp pour n et p entiers naturels : p p−1 Cnp = Cn−1 + Cn−1 1. Écrire une fonction récursive permettant de calculer Cnp . Cette fonction est-elle efficace selon vous ? p−1 2. Donner une relation de récurrence simple entre Cnp et Cn−1 . 3. Écrire une fonction récursive optimisée basée sur le relation de récurrence trouvée précédemment. 4. Écrire une fonction itérative pour le calcul de Cnp . A.D., A.F., G.L., A.K. Page : 1/1