/* Il crivello di Eratostene */ ref primi; var nMax, x; writemsg "Numero massimo da considerare? "; read nMax; //creazione e inizializzazione array primi = new nMax + 2; x = 2; while (x <= nMax) { primi[x] = 1; //1 per true x = x + 1; } //setaccio var numero, multiplo; numero = 2; while (numero <= nMax) { if (primi[numero] == 1) { multiplo = numero * 2; while (multiplo <= nMax) { primi[multiplo] = 0; //assegna false multiplo = multiplo + numero; } } numero = numero + 1; } //comunicazione risultato writemsg "Elenco primi: "; numero = 2; while (numero <= nMax) { if (primi[numero] == 1) { write numero; writemsg " "; } numero = numero + 1; } writeln;