/*************************************************************************************************************************************/
/* */
/* 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);
}
}