Tablica rozkładów na sumę dwóch liczb pierwszych/kod
Z Wikipedii
Kod w języku ANSI C według którego został wygenerowana tablica rozkładów na sumę dwóch liczb pierwszych:
#include <stdio.h> #include <memory.h> #include <math.h> #include <stdlib.h> void main() { int min,max; int n,m,pierwiastek; int pierwsza; int licznik; char *pierwsze; do { fprintf(stderr,"Poczatek przedzialu: "); scanf("%d",&min); } while (min<=3); do { fprintf(stderr,"\nKoniec przedzialu : "); scanf("%d",&max); } while (max<min); pierwsze=(char*)malloc(max+1); memset(pierwsze,1,max+1); printf( "Tablica rozkładów na sumę liczb pierwszych dla liczb parzystych od %d do %d:\n" "<table border=\"1\" width=\"25%%\" style=\"text-align: left\">\n" "<tr>\n" "<th width=\"30%%\">Liczba</th>\n" "<th width=\"70%%\">Składniki pierwsze</th>\n" "</tr>\n" ,min,max); licznik=1; for (n=2;n<=max;n++) { pierwsza=1; pierwiastek=(int)(sqrt(n)+0.5); for (m=2;m<=pierwiastek;m++) if (pierwsze[m] && n%m==0) { pierwsze[n]=0; break; } if (n>=min && !(n&1)) { if (n%100==0) printf( "</table>\n" "<table border=\"1\" width=\"25%%\" style=\"text-align: left\">\n" "<tr><td width=\"30%%\">%d</td><td width=\"70%%\">" ,n); else printf("<tr><td>%d</td><td>",n); for (m=2;m<n-1;m++) if (pierwsze[m] && pierwsze[n-m]) { printf("=%d+%d",m,n-m); break; } printf("</td></tr>\n"); } } printf("</table>\n"); }