Université Paris Descartes — UFR Math-Info Année 2016

publicité
Université Paris Descartes — UFR Math-Info
Année 2016-2017
Licence 2e année
Environnement de Calcul Scientifique et Modélisation
page web du cours : http://www.mi.parisdescartes.fr/˜moisan/ecs/
Exercices 34 à 36
Exercice 34 (théorème des nombres premiers).
1) Ecrire une fonction t = test premier(n) qui prend en entrée un entier n > 1 et renvoie
un vecteur t de booléens, de taille n, tel que t(k) est vrai si et seulement si k est premier (on
rappelle qu’un entier naturel k > 2 est premier s’il n’est divisible que par 1 et lui-même).
On utilisera la méthode du crible d’Eratosthène pour construire t. Vérifier la fonction pour
n = 20, et estimer l’ordre de grandeur du n maximal atteignable en un temps raisonnable
(quelques secondes). On utilisera la commande stacksize une fois pour toutes afin de disposer
du maximum de mémoire (RAM) possible.
2) Ecrire une fonction l = premiers(n) qui prend en entrée un entier n > 1 et renvoie
dans le vecteur l la liste des nombres premiers compris entre 1 et n. Vérifier la fonction pour
n = 100.
3) Ecrire une fonction N = compte premiers(n) qui prend en entrée un entier n > 1 et
renvoie un vecteur N de taille n tel que N (k) soit égal au nombre de nombres premiers
compris entre 1 et k. Vérifier la fonction pour n = 20. Tester expérimentalement, en traçant
(commande plot) le graphe de la fonction k 7→ N (k) log(k)/k, le théorème des nombres
premiers, qui établit que la limite de cette fonction vaut 1 quand k tend vers l’infini. La
convergence semble-t-elle rapide ?
Exercice 35 (conjecture de Goldbach).
La conjecture de Goldbach (datant de 1742, non démontrée à ce jour, mais l’objet de
nouveaux résultats en 2013) prétend que tout entier pair supérieur ou égal à 4 peut s’écrire
comme la somme de deux nombres premiers.
1) Ecrire une fonction N = goldbach ok(n) qui prend en entrée un entier n > 1 et renvoie
un vecteur N de booléens de taille n tel que N (k) est vrai ssi l’entier 2k peut s’écrire comme
la somme de deux nombres premiers. On pourra utiliser le vecteur p = premiers(2*n) (voir
exercice 34), et la matrice S de terme général S(i,j) = p(i)+p(j) (autrement dit, N (k) est
vrai ssi l’un au moins des termes de S vaut k). A l’aide de la fonction goldbach ok, tester la
conjecture de Goldbach jusqu’à l’entier le plus grand possible. Le facteur limitant est-il le
temps de calcul ou la quantité de mémoire requise ?
2) Plus généralement, écrire une fonction N = comete goldbach(n) qui prend en entrée un
entier n > 1 et renvoie un vecteur N de taille n tel que N (k) soit égal au nombre de façons
d’écrire l’entier 2k comme somme de 2 nombres premiers. Tracer par la commande
clf;plot(N,’.’,’markersize’,1)
le graphe de la fonction k 7→ N (k), appelé “comète de Goldbach”.
1
Exercice 36* (conjecture de Pólya).
Écrire une fonction N = nombre facteurs(n) qui prend en entrée un entier n > 1 et renvoie
un vecteur N de taille n tel que N (k) soit égal au nombre de facteurs premiers de k. Ecrire
ensuite une fonction L = Liouville(n) qui prend en entrée un entier n > 1 et renvoie un
vecteur L de taille n tel que L(k) soit égal à la somme pour i = 1 à k des (−1)N (i) avec les
notations précédentes. Tracer le graphe de L (appelée fonction de Liouville) calculée pour
n = 1000, 10000, 100000, et tester aussi loin que possible la conjecture de Pólya, qui prétend
que L(k) 6 0 pour tout entier k > 1.
2
Téléchargement