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
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" : "&times;%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("&times;%d",p);
			pierwsze[n]=0;
		}
		if (n>=min)
			printf("</td></tr>\n");
	}
	printf("</table>\n");
 
	return 0;
}