CONJECTURE DE GOLDBACH

philm_be Messages postés 2 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 12 octobre 2009 - 12 oct. 2009 à 09:42
Skanenruf Messages postés 38 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 juin 2010 - 12 oct. 2009 à 19:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50675-conjecture-de-goldbach

Skanenruf Messages postés 38 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 juin 2010
12 oct. 2009 à 19:28
On pourrait ajouter la liste des 100 premiers nombres premiers au début du test de primalité mais est-ce que le nombre de conditions testées n'est pas plus gros que le nombre de cas testés de façon itérative ? En mettant une condition n<100 pour exclure des tests tous les gros nombres.

If n < 100 Then If n 2 Or n 3 Or n = 5 Or n = 7 Or n = 11 Or n = 13 Or n = 17 Or n = 19 Or n = 23 Or n = 29 Or n = 31 Or n = 37 Or n = 41 Or n = 43 Or n = 47 Or n = 53 Or n = 59 Or n = 61 Or n = 67 Or n = 71 Or n = 73 Or n = 79 Or n = 83 Or n = 89 Or n = 97 Then Return True
End If
jmocaro Messages postés 14 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 19 octobre 2007
12 oct. 2009 à 19:09
re bonjour,

on en finit jamais avec les améliorations,
cependant j'en propose une autre: le test de primalité coûte cher.
On pourrait imaginer de stocker si on a testé la primalité d'un entier, et son résultat. Dans une ou 2 collections par exemple (je suis VB6-iste...)
Ceci serait très profitable pour la conjecture faible.

à +

jmocaro
Skanenruf Messages postés 38 Date d'inscription dimanche 12 octobre 2008 Statut Membre Dernière intervention 30 juin 2010
12 oct. 2009 à 18:50
Merci beaucoup pour vos réponses à tous les trois, j'en ai profité pour amélioré certains points :

- J'ai commencé par optimiser mon test de primalité avec comme limites du processus itératif : 2 et math.sqrt(n). (Merci Jmocaro et Philm_be).
- J'ai supprimé la seconde boucle de mon algorithme sur la conjecture forte (effectivement c'était inutile).
- J'ai ajouté un algorithme (sur la même base) pour la conjecture faible en utilisant cette fois deux boucles imbriquées ainsi que la méthode soustractive (n-i-j).

PS. Je rappelle que la conjecture faible est la même que la conjecture classique (forte) de Goldbach sauf que c'est pour les impairs supérieurs à 7 qui sont donc (on a conjecturé) égaux à une somme de trois nombres premiers (impairs).
jmocaro Messages postés 14 Date d'inscription mardi 25 mars 2003 Statut Membre Dernière intervention 19 octobre 2007
12 oct. 2009 à 10:00
bonjour,
je pense que la deuxième boucle est inutile puisque de toute façon j=n-i
pourquoi boucler pour chercher un tel 'j' ?...
Il reste à tester que j(=n-i) est premier.
Cette première boucle peut s'arrêter à la moitié car i+j=j+i.

La primalité se teste de 2 jusqu'à la racine de n, c'est plus restrictif que la moitié.

Jean-Maurice
philbar71 Messages postés 70 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 5 juillet 2013
12 oct. 2009 à 09:52
Au passage je te signale que Julien39 travaille aussi sur la conjecture de Goldbach :
http://www.vbfrance.com/codes/TESTER-CONJECTURE-GOLDBACH-TOUT-NOMBRE-PAIR-SUPERIEUR-EST_32365.aspx

Bon courage pour la suite de tes recherches, mais ne néglige quand même pas ton français car dans un CV ou dans d'autres domaines c'est dans la qualité de l'écriture qu'on détectecte les meilleurs candidats.
philm_be Messages postés 2 Date d'inscription mardi 13 juillet 2004 Statut Membre Dernière intervention 12 octobre 2009
12 oct. 2009 à 09:42
Pour la fonction "primalite", rien ne sert de partir de n-1 me semble-t-il. Il suffit de commencer à la moitié de n. Tout ce qui est supérieur ne pourra forcément pas être un diviseur.
Philippe
Rejoignez-nous