/*************************************************************************************************************************************/ /* */ /* C A L C U L D E T R I P L E T S D E N O M B R E S P Y T H A G O R I C I E N S */ /* F A I T S U N I Q U E M E N T D E N O M B R E S P R E M I E R S : */ /* */ /* */ /* Author of '$xtc/Pythagore.11$c' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20130304143239). */ /* */ /*************************************************************************************************************************************/ #include <stdio.h> #define N 9000 \ /* Definition du maximum des trois nombres {a,b,c}. */ #define STORE(n) \ { \ ListeDesNombrePremiers[IndexDesNombrePremiers]=n; \ IndexDesNombrePremiers++; \ } main() { int IndexDesNombrePremiers=0; int ListeDesNombrePremiers[N]; int NombreEntierCourant; int index; int a,b,c; /* Trois nombres entiers courants... */ STORE(2); NombreEntierCourant=ListeDesNombrePremiers[IndexDesNombrePremiers-1]+1; while (IndexDesNombrePremiers < N) { int EstPremier=0; for (index=0 ; index<=IndexDesNombrePremiers-1 ; index++) { if ((NombreEntierCourant % ListeDesNombrePremiers[index]) == 0) { EstPremier=1; } else { } } if (EstPremier == 0) { STORE(NombreEntierCourant); } else { } NombreEntierCourant=NombreEntierCourant+2; } /* En faisant ici : */ /* */ /* for (index=0 ; index<=IndexDesNombrePremiers-1 ; index++) */ /* { */ /* ListeDesNombrePremiers[index]=index+1; */ /* } */ /* */ /* on retombe sur 'v $xtc/Pythagore.01$c'... */ for (a=1 ; a<=N ; a++) { for (b=a ; b<=N ; b++) /* En mettant "b=a" au lieu de "b=1", on elimine les solutions "commutees"... */ { for (c=b ; c<=N ; c++) { int pa=ListeDesNombrePremiers[a-1]; int pb=ListeDesNombrePremiers[b-1]; int pc=ListeDesNombrePremiers[c-1]; /* En faisant ici : */ /* */ /* pa=a; */ /* pb=b; */ /* pc=c; */ /* */ /* on retombe sur 'v $xtc/Pythagore.01$c'... */ if (((pa*pa)+(pb*pb)) == (pc*pc)) { printf("%d*%d + %d*%d = %d*%d\n",pa,pa,pb,pb,pc,pc); } else { /* Il semblerait qu'il n'y ait pas de solutions pour les 9000 premiers nombres premiers... */ } } } } }