Hai comprato una grande scatola di componenti per computer a caso a un mercatino dell'usato. Hai iniziato a mettere insieme i pezzi per costruire computer personalizzati.
Vuoi testare le prestazioni di diverse combinazioni di componenti, così decidi di creare il tuo programma di benchmark per vedere come si comportano i tuoi computer. Scegli il famoso algoritmo «crivello di Eratostene», un algoritmo antico, ma che dovrebbe spingere i tuoi computer al limite.
Il tuo compito è creare un programma che implementi l'algoritmo del crivello di Eratostene per trovare tutti i numeri primi minori o uguali a un numero dato.
Un numero primo è un numero maggiore di 1 che è divisibile solo per 1 e per se stesso. Per esempio, 2, 3, 5, 7, 11 e 13 sono numeri primi. Al contrario, 6 non è un numero primo, dato che è divisibile non solo per 1 e per se stesso, ma anche per 2 e per 3.
Per usare il crivello di Eratostene, per prima cosa crei un array con tutti i numeri compresi tra 2 e il numero dato. Poi ripeti i passaggi seguenti:
Continui a ripetere questi passaggi finché non hai esaminato tutti i numeri dell'array. Alla fine, tutti i numeri non marcati sono primi.
I test non verificano che tu abbia implementato l'algoritmo, ma solo che tu abbia prodotto l'array corretto dei numeri primi. Per verificare che tu stia implementando il crivello correttamente, un buon primo test è controllare che tu non usi operazioni di divisione o di resto.
Supponi di dover trovare i numeri primi minori o uguali a 10.
Hai esaminato tutti i numeri e hai scoperto che 2, 3, 5 e 7 sono ancora non marcati, il che significa che sono i numeri primi minori o uguali a 10.
Iscriviti a Exercism per imparare e padroneggiare Delphi Pascal con 76 esercizi e il mentoring di persone reali, tutto gratis.
Esploriamo vari approcci al crivello di Eratostene: partiamo da cicli annidati e valutazione pigra, per poi passare agli insiemi e infine alla ricorsione.