lunedì 9 aprile 2018

Arduino alla ricerca dei numeri primi. Parte 1

Ciao e ben ritrovato sul Blog Aspettando il bus.
Mentre mettevo un po' in ordine tutti i vari foglietti con i progetti che non ho mai pubblicato sul Blog mi è capitato fra le mani uno di alcuni mesi fa che mi sembrava promettente: come valutare le prestazioni delle varie BOARD di Arduino in modo semplice e veloce?
Quindi mi sono chiesto perché non fare uno sketch che calcoli i numeri primi ?
Ma subito dopo è nata spontanea un'altra domanda : ma quale algoritmo utilizzare ?


Fig. 1 - Lo sketch per la ricerca dei numeri primi  di Paolo Luongo
Fig. 1 - Lo sketch per la ricerca dei numeri primi  di Paolo Luongo

Bene se la cosa ti incuriosisce non devi fare altro che ...

... seguire questo piccolo articolo.

Iniziamo con le fasi iniziali del progetto scrivendo i primi requisiti di base del progetto:

1) deve poter girare su una qualsiasi BOARD Arduino Compatibile;
2) deve mostrare i numeri primi mentre vengono trovati;
3) deve segnalare che ha trovato un nuovo numero primo.

Partiamo da questi tre punti:
1) non dovrebbero esserci problemi particolari,  basta utilizzare un set comune di istruzioni;
2) visualizzeremo il numero utilizzando la console seriale;
3) accenderemo il LED presente su ogni BOARD Arduino.

Le BOARD che ho disponibili sono la NANO V3.0 (Fig.1), Arduino UNO R3 e la MEGA 2560.

Quale algoritmo utilizzare? Ne ho scelto uno che prevedere di memorizzare i numeri primi, via via che vengono trovati, in un vettore. Questo vettore viene utilizzato come fonte di numeri primi da utilizzare nella scomposizione in fattori dei numeri seguenti.

Una veloce definizione di numero primo: un numero si dice primo quando è divisibile solo per uno e per se stesso.
Inoltre il campo di esistenza dei numeri primi è quello dei numeri interi positivi.
Lascio ai matematici la questione se il numero 1 sia o meno un numero primo:
per me il primo numero primo è 2 e vivo felice così !
 ;-)

Fig. 2 - Risultato della ricerca dei primi 850 numeri primi con Arduino UNO R3 - Foto di Paolo Luongo
Fig. 2 - Risultato della ricerca dei primi 850 numeri primi con Arduino UNO R3 - Foto di Paolo Luongo

Per problemi di memoria con Arduino UNO R3 e Arduino NANO ci dovremo fermare ai primi 850 numeri primi,
(Figura 2 e Figura 3), mentre con la MEGA 2560 potremmo arrivare fino a 3500.

La spiegazione dello sketch la farò in un prossimo articolo, oggi mi limito a farvi vedere i risultati ed a invitarvi a sperimentare lo sketch sul vostro dispositivo.
(Altrimenti l'articolo sarebbe rimasto nel cassetto chissà per quanto tempo ancora)

Fig. 3 - Risultato della ricerca dei primi 850 numeri primi con Arduino NANO V3 - Foto di Paolo Luongo
Fig. 3 - Risultato della ricerca dei primi 850 numeri primi con Arduino NANO V3 - Foto di Paolo Luongo
Ed ecco quello che si può fare con la BOARD Arduino MEGA 2560

Fig. 4 - Risultato della ricerca dei primi 3500 numeri primi con Arduino MEGA 2560 - Foto di Paolo Luongo
Fig. 4 - Risultato della ricerca dei primi 3500 numeri primi con Arduino MEGA 2560 - Foto di Paolo Luongo

Una considerazione finale: Forse si può spremere qualche altro numero primo alla vostra BOARD ma il rischio è che diventi instabile, come si legge nelle foto precedenti. Forse conviene cambiare algoritmo, ma ne riparleremo.

Per oggi è tutto. Lo sketch lo trovate qui e se avete dubbi o perplessità potete scrivermi in privato o commentare questo posto.

Per oggi è tutto ! (Buon lavoro)

Qui trovi la pagina delle FAQ di questo Articolo.

Ciao
Paolo
;-)

 

Nessun commento: