SUR LA RÉPARTITION DES NOMBRES PREMIERS Problème (3 heures) Un entier naturel x est dit premier si l'ensemble de ses diviseurs positifs contient s'il s'écrit x d d , avec 2 ¤ d , d divise xu deux éléments (qui sont alors 1 et x). On dit que x est ¤ x 1. D pxq td P N | d exactement 1 1. 2 1 2 composé Diviseurs et test de primalité naïf QUESTION 1 Écrire un programme Diviseurs(x) qui étant donné un entier naturel x 0 renvoie, sous forme d'une liste rangée dans l'ordre croissant, l'ensemble D pxq. QUESTION 2 a) Soit x ¥ 2 un entier composé. Justier qu'il possède un diviseur d P t2 ; . . . ; ?x u. b) En déduire un programme EstPremier(x) qui teste si x est premier et renvoie un booléen pour le dire. ? t u Ce programme eectuera Op xq opérations arithmétiques (on ne demande pas de le démontrer) et la fonction sqrt. n'utilisera pas 2. Le crible d'Eratosthène On souhaite, étant xé N P N, construire une liste B de booléens, de longueur N 1, et telle que B[x] est vrai si et seulement si x est premier. On part de B = [False, False, True, True, True, True, ..., True] et on va progressivement modier les cases pour obtenir le bon résultat. QUESTION 3 Écrire un programme PremierVraiDepuis(B, deb) qui étant donnés une liste B de booléens et un entier naturel deb renvoie le plus petit indice x ¥ deb tel que B[x] est vrai. On renverra la valeur 1 s'il n'existe pas de tel indice. QUESTION 4 Écrire un programme CocherMultiplesStricts(B, x) qui étant donnés une liste de booléens B et un indice non nul x aecte la valeur False à toutes les cases de B dont l'indice est un multiple strict de x. QUESTION 5 a) Justier que si l'on a coché (c'est-à-dire aecté la valeur False ?aux cases d'indices correspondants) les nombres 0, 1, et les multiples stricts de tous les x P t2 ; 3 ; . . . ; ng Lycée Saint Louis 1 t xuu , alors B est comme on le souhaite. sur la répartition des nombres premiers b) En déduire un programme Eratosthène(N) qui construit et renvoie B. QUESTION 6 a) Écrire un programme LesVrais(B) qui étant donnée une liste de booléens B renvoie la liste de tous les entiers x tels que B[x] est vrai. b) En déduire un programme Premiers(N) qui renvoie la liste de tous les nombres premiers n'excédant pas N, et un programme π(N) qui renvoie leur nombre. 3. Logarithmes Dans cette partie on s'eorce de caluler des valeurs approchées de la fonction πpNq card tx P N | x est premier et x ¤ Nu . Nous allons plus précisément nous intéresser à deux approximations classiques, la première est π pNq N lnpNq 1 et la seconde est πpNq LipNq, utilisant la fonction d' écart logarithme intégral dénie par wx dt Lipxq . lnptq 2 Le tableau ci-dessus donne une idée de la qualité de ces approximations (les valeurs des deux dernières colonnes sont arrondies à l'entier le plus proche). 3.1 N π pNq 102 25 106 78 498 109 50 847 534 1015 29 844 570 422 669 1023 1 925 320 391 606 803 968 923 Calcul de N lnpNq 1 π pNq LipNq πpNq 3 4 468 129 145 992 1 700 28 336 573 668 1 052 618 742 932 439 990 454 123 7 250 186 215 lnpxq On n'utilisera évidemment pas, dans cette partie (ni d'ailleurs dans le reste du problème) la fonction log ou ln prédénie. Soit f : r0 ; 8r la fonction dénie par f pxq x a, où a est un réel strictement positif et p un entier naturel au moins égal à 2. On rappelle la formule d'itération de Newton p xn 1 xn ff1ppxxnqq . n QUESTION 7 On choisit un x ¡ ?a. a) Esquisser la courbe représentative de la fonction f . Faire apparaître l'abscisse ?a et les premiers termes 0 de la suite px q ¥ . ng Lycée Saint Louis p p n n 0 2 sur la répartition des nombres premiers b) Démontrer que la suite px q ¥ est décroissante et minorée (indication : la fonction f est convexe). ? c) Justier que la suite px q ¥ converge vers a. QUESTION 8 Écrire le programme Racine(a, p) qui calcule une valeur approchée de ?a. On n'a n n 0 p n n 0 p pas besoin de valeur très précise dans la suite, donc on arrêtera la méthode de Newton lorsque deux termes consécutifs sont à moins de 1{10 l'un de l'autre. QUESTION 9 a) Soit x ¡ 1. Justier qu'il existe un entier p tel que ?x 2. b) Écrire un programme Trouver_p(x) qui détermine le plus petit entier p tel que 2 QUESTION 10 Pour x P s1 ; 2r on admet que p p lnpxq ņ k n p1qk 1 px k 1q ¤ px n 1q1 k 1 ¡ x. 1 . a) Déduire de cette relation un programme PetitLogarithme(x, ε) qui étant donné x P s1 ; 2r calcule une valeur approchée de lnpxq à ε près. b) Écrire nalement un programme ln(x, ε=1e-10) qui étant donné x ¡ 1 calcule une valeur approchée de lnpxq à ε près. 3.2 Calcul de Lipxq Soit a a a a b une subdivision du segment ra ; bs en n sous-intervalles, pas forcément régulière. On donne la formule des trapèzes 0 1 n wb f ptq dt a f pa q k n¸1 k 0 f pak 2 1 q pa k 1 ak q. QUESTION 11 Écrire le programme Trapèzes(f, A) qui applique la méthode des trapèzes à la fonction et à la subdivision représentée par la liste A. On suppose que A possède au moins deux éléments et qu'ils sont distincts et rangés dans l'ordre croissant. QUESTION 12 Pour calculer Lipxq on va utiliser une subdivision pa q ¤ ¤ de r2 ; xs suivant une progression géométrique. a) Exprimer, en fonction de x et n, la valeur du réel q ¡ 1 tel que a 2q pour tout k P t0 ; . . . ; nu. b) Écrire le programme Subdivision(x, n) qui construit la liste A représentant la subdivision pa q ¤ ¤ de r2 ; xs. On utilisera une valeur approximative de la raison q, mais on s'assurera que le dernier élément de la subdivision est rigoureusement égal à x. QUESTION 13 Écrire un programme Li(x) qui calcule et renvoie une valeur approchée de Lipxq en ? utilisant la méthode des trapèzes et une subdivision géométrique en n x sous-intervalles. f k 0 k n k k k 0 k n t 4. 3 u Conjecture de Goldbach Énoncée en 1742 par Christian Goldbach et Leonhard Euler elle arme que tout nombre pair au moins égal à 6 est somme de deux nombres premiers impairs. On se propose de la vérier expérimentalement jusqu'à une certaine borne, en construisant une liste de booléens B, de longueur N ¥ 1, telle que B[k] est vraie si et seulement si x 2k 6 est la somme de deux nombres premiers impairs. ng Lycée Saint Louis 3 sur la répartition des nombres premiers QUESTION 14 Écrire un programme CocherLesSommes(N) qui construit cette liste B aussi ecacement que possible. QUESTION 15 En déduire un programme VérifierConjecture(N) qui renvoie True si et seulement si la conjecture de Goldbach est vraie pour les N premiers nombres pairs supérieurs ou égaux à 6. fin ng Lycée Saint Louis 4 sur la répartition des nombres premiers