La comète de Goldbach

Publié le 10/01/17

On va utiliser deux variables globales: l’une (nommée \text{premiers}) contenant l’ensemble des « premiers nombres premiers connus » (à un moment donné de la session de travail) et l’autre (nommée \text{maxp}) contenant le plus grand élément figurant dans cet ensemble.
Pour commencer on pose \text{premiers}=\{2,3\} et \text{maxp}=3.

  1. Écrire une fonction \text{divisible} prenant en argument un entier {n\ge2} et renvoyant \text{True} si {n} est divisible par au moins un des éléments de \text{premiers} (et \text{False} sinon).
  2. Écrire une fonction \text{trouvepremiers} prenant en argument un entier {n\ge2} et actualisant la variable globale \text{premiers} pour qu’elle reçoive l’ensemble des nombres premiers inférieurs ou égaux à {n} (et actualisant \text{maxp} par la même occasion).
  3. La conjecture de Goldbach affirme que tout entier pair {n\ge4} peut s’écrire comme la somme de deux entiers premiers.
    Écrire une fonction \text{goldbach} prenant en argument un entier {n\ge4} (supposé pair) et renvoyant la liste des couples {(p,p')} d’entiers premiers tels que {n=p+p'}.
  4. On appelle comète de Goldbach le nuage des points {(k,g(k))}, où {k} décrit les entiers pairs dans un certain intervalle {[4,n]} et où {g(k)} désigne le nombre de façons d’écrire {k} comme la somme de deux nombres premiers. Écrire une fonction prenant en argument un entier {n\ge4} et traçant la comète de Goldbach dans {[4,n]}. Tracer cette comète pour {n=100000}, et faire un voeu.

  1. Pour commencer on définit les variables globales \text{premiers} et \text{maxp} :

    La fonction \text{divisible} est très simple à écrire si on connait la fonction intégrée \text{any} :

  2. Voici la fonction trouvepremiers:

    Voici des exemples d’utilisation de \text{trouvepremiers} (à partir des conditions initiales):
  3. On écrit la fonction \text{goldbach} :

    Voici un exemple d’utilisation de la fonction \text{goldbach} :
  4. Voici la fonction \text{comete} :

    Et le résultat obtenu avec \text{comete(1000)}:
    comete100000