Quote Originariamente inviata da fenics Visualizza il messaggio
infatti si tratta proprio di eratostene
Elementare, caro dottor Watson...

Ma cosa dice codesto algoritmo, certo non efficientissimo ma di facilissima implementazione, nella sua versione di base "carta-e-penna"?

Fissato un limite arbitrario intero positivo n (significativamente maggiore di due), si compila una tabella contenente ordinatamente tutti i numeri interi positivi strettamente compresi tra 2 e tale n. Quindi, per ogni intero positivo strettamente compreso tra 2 e la radice quadrata di n (approssimata per difetto all'intero, ovviamente!) si "cancellano" dalla tabella tutti i multipli di tale numero.
I numeri rimanenti dopo questa "setacciatura" sono tutti e soli i numeri primi compresi tra due (primo numero primo e unico primo pari) e il limite dato.

Tutto chiaro fino a qui? Quel "per ogni" si traduce ovviamente in un ciclo, e "tutti i multipli" in un secondo ciclo annidato.
Prova intanto ad implementare questa parte, usando uno zero per "cancellare" i valori compositi dalla tabella: per migliorie e ottimizzazioni c'è tempo e modo di procedere per gradi (le due più banali e macroscopiche: i numeri pari possono subito essere esclusi per costruzione, e la "tabella" può essere facilmente implementata come un array grossolanamente booleano, sebbene in modo poco efficiente in spazio).