Tablica rozkładów na sumę dwóch liczb pierwszych/kod

Z Wikiźródeł, repozytorium wolnych materiałów źródłowych


Tablica rozkładów na sumę dwóch liczb pierwszych Tablica rozkładów na sumę dwóch liczb pierwszych • Kod źródłowy
Tablica rozkładów na sumę dwóch liczb pierwszych Tablica rozkładów na sumę dwóch liczb pierwszych
Kod źródłowy
Kod w języku ANSI C, według którego została 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");
}