Devoir Maison sur feuille. Pour le 3 novembre. Informatique Pour Tous - 2016/2017 On rappelle qu’un entier naturel est premier lorsqu’il a exactement deux diviseurs : 1 et lui-même. Si a et b sont deux entiers, on rappelle que a // b et a % b donnent le quotient et le reste de la division euclidienne de a par b, respectivement. Après avoir importé le module math par la commande from math import *, on pourra utiliser la fonction floor qui donne la partie entière d’un réel en argument. 1. (a) Écrire une fonction divise qui prend deux entiers naturels a, b en arguments avec a non nul et renvoie True si a divise b, False sinon. (b) Écrire une fonction diviseurs qui prend un entier naturel non nul n en argument et renvoie la liste des diviseurs de n. (c) Écrire une fonction premier qui prend un nombre en argument et renvoie True si ce nombre est premier, False sinon. (d) Écrire une fonction tous_premiers qui prend un entier naturel n en argument et renvoie la liste de tous les nombres premiers inférieurs ou égaux à n. 2. Le crible d’Ératosthène est un algorithme beaucoup plus efficace pour obtenir la liste des nombres premiers inférieurs à un entier n. On part d’une liste L de taille n + 1 dont tous les éléments sont des booléens de valeur True. On modifie √ la valeur de L[0] et L[1] à False. Puis pour chaque i entre 2 et n, si L[i] contient True, alors pour chaque k multiple de i et strictement supérieur à i (quel est le premier ? ), on modifie L[k] en False. (a) Écrire une fonction eratosthene qui prend un nombre n en argument et renvoie la liste L décrite ci-dessus. (b) En utilisant la fonction eratosthene, écrire une fonction tous_premiers2 qui prend un entier naturel n en argument et renvoie la liste de tous les nombres premiers inférieurs ou égaux à n. 3. Nous nous intéressons maintenant au calcul du PGCD en Python. On rappelle l’algorithme d’Euclide permettant de calculer le PGCD 1 de a et b : Tant que b > 0 : r = reste de la division de a par b a=b b=r Renvoyer a Écrire une fonction pgcd implémentant l’algorithme d’Euclide en Python. 4. Nous allons utiliser une autre méthode de calcul de PGCD, basée sur la décomposition en facteurs premiers. (a) Écrire une fonction decomposition ayant un argument n et qui renvoie la liste L des diviseurs premiers de n avec multiplicités. On pourra stocker dans chaque élément de L une liste composée de deux entiers naturels : le diviseur et sa multiplicité. Par exemple decomposition(50) devra renvoyer la liste [[2, 1], [5, 2]], puisque 50 = 21 × 52 . (b) En déduire une autre fonction pgcd2 renvoyant le PGCD de deux entiers naturels en argument, en utilisant decomposition. 2