rctimelines
Utente Èlite
- Messaggi
- 5,143
- Reazioni
- 2,023
- Punteggio
- 86
Ho spiegato sopra come si fa, esistono solo metodi che voi chiamate "brute Force", solo che possono essere ottimizzati.
Bisogna dividere il numero per tutti i precedenti finché non trovi una divisione senza resto. La caratteristica dei numeri primi è che sono infiniti e non hanno alcuna regolarità di distribuzione, di conseguenza non esiste una formula per individuarli (la loro forza) ma bisogna cercarli ad uno a uno.
Anziché dividere per ogni numero puoi ridurre il numero di divisioni limitando ai soli numeri primi già trovati perché gli altri sono già multipli di qualcosa.
Quindi, il ragionamento mi porta a dire:
Prepara un vettore (array) in cui memorizzare i numeri primi che troverai, poi fai un ciclo del range in cui vuoi cercare (sempre a partire da 1).
Dividi ogni numero del ciclo per tutti gli elementi del vettore (un secondo ciclo annidato): se non trovi divisioni a resto zero hai trovato un numero primo da aggiungere all'array!
Inviato dal mio Nexus 5 utilizzando Tapatalk
Bisogna dividere il numero per tutti i precedenti finché non trovi una divisione senza resto. La caratteristica dei numeri primi è che sono infiniti e non hanno alcuna regolarità di distribuzione, di conseguenza non esiste una formula per individuarli (la loro forza) ma bisogna cercarli ad uno a uno.
Anziché dividere per ogni numero puoi ridurre il numero di divisioni limitando ai soli numeri primi già trovati perché gli altri sono già multipli di qualcosa.
Quindi, il ragionamento mi porta a dire:
Prepara un vettore (array) in cui memorizzare i numeri primi che troverai, poi fai un ciclo del range in cui vuoi cercare (sempre a partire da 1).
Dividi ogni numero del ciclo per tutti gli elementi del vettore (un secondo ciclo annidato): se non trovi divisioni a resto zero hai trovato un numero primo da aggiungere all'array!
Inviato dal mio Nexus 5 utilizzando Tapatalk