Tablica liczb pierwszych i rozkładów na czynniki pierwsze/kod
Z Wikiźródeł, repozytorium wolnych materiałów źródłowych
| ←Tablica liczb pierwszych i rozkładów na czynniki pierwsze | Tablica liczb pierwszych i rozkładów na czynniki pierwsze Kod źródłowy |
||
[edytuj] ANSI C
Kod w języku ANSI C według którego została wygenerowana tablica liczb pierwszych i rozkładów na czynniki pierwsze:
#include <stdio.h> #include <memory.h> #include <math.h> #include <stdlib.h> int main() { int min,max; int n,m,p,pierwiastek; int pierwsza; int licznik; char *pierwsze; do { fprintf(stderr,"Poczatek przedzialu: "); scanf("%d",&min); } while (min<=1); do { fprintf(stderr,"\nKoniec przedzialu : "); scanf("%d",&max); } while (max<min); pierwsze=(char*)malloc(max+1); /*new char[max+1];*/ memset(pierwsze,1,max+1); printf( "<table border=\"1\" width=\"33%%\" style=\"text-align: left\">\n" "<caption>Tablica rozkładów na czynniki pierwsze dla liczb od %d do %d</caption>\n" "<tr>\n" "<th width=\"20%%\">Liczba</th>\n" "<th width=\"80%%\">Czynniki pierwsze</th>\n" "</tr>\n" ,min,max); licznik=1; for (n=2;n<=max;n++) { if (n>=min) if (n%100==0) printf( "</table>\n" "<table border=\"1\" width=\"33%%\" style=\"text-align: left\">\n" "<tr><td width=\"20%%\">%d</td><td width=\"80%%\">" ,n); else printf("<tr><td>%d</td><td>",n); p=n; pierwsza=1; pierwiastek=(int)(sqrt(p)+0.5); for (m=2;m<=pierwiastek;m++) if (pierwsze[m] && p%m==0) { if (n>=min) printf(pierwsza ? "=%d" : "×%d",m); pierwsza=0; p/=m; m--; pierwiastek=(int)(sqrt(p)+0.5); } if (pierwsza) { if (n>=min) printf("Liczba pierwsza nr %d",licznik); licznik++; } else { if (n>=min) printf("×%d",p); pierwsze[n]=0; } if (n>=min) printf("</td></tr>\n"); } printf("</table>\n"); return 0; }