/*************************************************************************************************************************************/ /* */ /* E T U D E D E L A C O N J E C T U R E D E G O L D B A C H : */ /* */ /* */ /* Author of '$xtc/Goldbach.01$c' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20121012131810). */ /* */ /*************************************************************************************************************************************/ #include <stdio.h> #define NOMBRE \ 167 \ /* Nombre de nombres premiers a calculer... */ \ /* */ \ /* La valeur 167 est la pour 'v ''$xiMt/MathematiquesPhysiqueFractales.02.1.12.$m4.$I 990', */ \ /* pour 'v ''$xiMt/MathematiquesPhysiqueFractales.22.1.$m4.$I 990' ainsi que pour */ \ /* 'v ''$xiMl/GOLD.nn.1.$ANGLAIS.$m4.$I 990'... */ #define STORE(n) \ { \ ListeDesNombresPremiers[IndexDesNombresPremiers]=n; \ IndexDesNombresPremiers++; \ } main() { int IndexDesNombresPremiers=0; int ListeDesNombresPremiers[NOMBRE]; int NombreEntierCourant; STORE(2); NombreEntierCourant=ListeDesNombresPremiers[IndexDesNombresPremiers-1]+1; while (IndexDesNombresPremiers < NOMBRE) { int index; int EstPremier=0; for (index=0 ; index<=IndexDesNombresPremiers-1 ; index++) { if ((NombreEntierCourant % ListeDesNombresPremiers[index]) == 0) { EstPremier=1; } else { } } if (EstPremier == 0) { STORE(NombreEntierCourant); } else { } NombreEntierCourant=NombreEntierCourant+2; } IndexDesNombresPremiers--; for (NombreEntierCourant=4 ; NombreEntierCourant<=ListeDesNombresPremiers[IndexDesNombresPremiers] ; NombreEntierCourant=NombreEntierCourant+2 ) { int NombreDeSolutions=0; int index1; printf("%d =",NombreEntierCourant); for (index1=0 ; index1<=IndexDesNombresPremiers ; index1++) { int NombrePremier1=ListeDesNombresPremiers[index1]; int index2; for (index2=index1 ; index2<=IndexDesNombresPremiers ; index2++) { int NombrePremier2=ListeDesNombresPremiers[index2]; if (NombreEntierCourant == (NombrePremier1+NombrePremier2)) { NombreDeSolutions++; /* Comptage des facons de decomposer 'NombreEntierCourant', sachant que l'on tient compte */ /* de la commutativite de l'addition : ainsi 'A+B' et 'B+A' ne sont comptes qu'une seule */ /* fois... */ printf(" %d+%d",NombrePremier1,NombrePremier2); } else { } } } printf(" #%d\n",NombreDeSolutions); } }