infatti si tratta proprio di eratostene
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).
• Un plauso a Grisha Perelman, raro esempio di genuino anticonformismo umano e scientifico.
come si fa la radice quadrata in c?? Cioè come la calcolo??
sqrt da math.h
"Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares
oddio, allora, io perora ho scannerizzato 2 cicli for annidati in questo modo
codice:#include<stdio.h> int main() { int vet[100]; int i, n; for(i=0; i<100; i++) { for(n=2; n<100; n++) } }