LA CONJECTURE DE SIERPINSKI

cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 - 22 nov. 2009 à 00:20
pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 - 7 déc. 2009 à 13:48
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/50879-la-conjecture-de-sierpinski

pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 11
7 déc. 2009 à 13:48
Comme je ne peux pas corriger, c'est bien sûr
de : 5/2477 , 5/2557 , 5/2663 et 5/2999
dont je voulais parler ci-dessus. Désolé, pgl10
pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 11
7 déc. 2009 à 11:53
Dans la version actuelle de ce programme,
avec les entiers de [1,1226421]
2477/5 , 2557/5 , 2663/5 et 2999/5
n'ont qu'une seule décomposition.
Ont-ils d'autres décompositions ?
Quels autres nombres n'ont qu'une décomposition ?
pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 11
23 nov. 2009 à 11:59
Pour ceux qui le souhaitent il y a aussi une autre méthode :
en effet si : n/d=1/i+1/j+1/k
on a : r=(n*i-d)/(d*i)=(j+k)/(j*k)
connaissant i et j on calcule en (long double) : r
puis k=j/(r*j-1) => OK si k entier.
Ceci pourrait avoir de meilleures limites autorisées.
pgl10 Messages postés 381 Date d'inscription samedi 18 décembre 2004 Statut Non membre Dernière intervention 25 avril 2024 11
22 nov. 2009 à 13:33
Grand merci à JUJU12 pour ses deux améliorations judicieuses. La deuxième permet effectivement de fortement diminuer le temps de traitement. J'avais déjà limité la boucle sur i. Maintenant la boucle sur k est supprimée. Ce qui permet d'utiliser des intervalles [1,limite] aussi grands que l'on veut.
cs_juju12 Messages postés 966 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 4 mars 2010 4
22 nov. 2009 à 00:20
Bonjour;

if(3*d/n*n==3*d) im=3*d/n; else im=1+3*d/n;
peut être remplacé par simplement :
im=1+(3*d-1)/n;

D'un point de vue algorithmique, il n'est pas nécessaire de faire la boucle sur k; il suffirait par exemple de le calculer à partir de i et j
5ijk=n(ij+ik+jk) => k=(nij)/(5ij-n(i+j)),
puis regarder s'il y a égalité 5ijk==n(ij+ik+jk).
Ca diminuera le temps de calcul d'un facteur assez élevé! (bien que pour des nombres aussi petits je suppose que le calcul ne prend qu'un instant, mais bon, pour le principe, et si tu veux par la suite travailler avec des nombres arbitrairement grands...)


Voilà, c'est pas exhaustif, on peut toujours améliorer... mais bonne continuation.
Rejoignez-nous