Verifica di un numero primo con Scratch
Algoritmo sui numeri primi con Scratch

Sviluppiamo un programma che calcoli e visualizzi se un numero è primo con Scratch.

Definizione di numero primo
Ricordiamo che un numero primo è un numero naturale maggiore di 1 che è divisibile solamente per 1 e per sé stesso.

Sviluppo del programma

Per lo sviluppo dello script scegliamo lo stage e lo sprite che più ci piace, quindi chiediamo in input un numero N e verifichiamo se esso è primo.

Una soluzione potrebbe essere quella di prendere N e dividerlo prima per 1, poi per 2, … fino ad arrivare ad N/2. Al termine contiamo i divisori, se ne troviamo solo uno (dato che ci fermiamo ad N/2 tralasciamo il numero stesso) allora il numero é primo.

Ci fermiamo ad N/2 perché se dividiamo un numero con numeri più grandi della sua metà, otterremo sempre un numero con la virgola. In questo modo avremo meno iterazioni.

Ma potremmo anche tralasciare 1, in quanto sappiamo che tutti i numeri sono divisibili per uno. Quindi nel nostro programma per stabilire se un numero è primo il contdivisori al termine del ciclo dovrà risultare uguale a zero.

Dunque creiamo le variabili:

divisore che facciamo partire da 2;

contdivisori  che facciamo partire da zero. Questa variabile serve a contare il numero dei divisori che a mano a mano trova.

Se il numero dei divisori è pari a zero, il numero è primo, altrimenti non lo è.

algoritmi dei numeri orimi con Scratch
Come verificare se un numero è primo con Scratch

Il programma potrebbe essere perfezionato ad esempio inserendo un controllo ulteriore e uscendo dal ciclo quando già trova un divisore senza continuare a dividere.

Prova a trovare una soluzione e discutiamone nei commenti sotto.

Alcuni link utili:
La successione di Fibonacci realizzata con Scratch

Massimo fra n numeri in Scratch

Massimo fra 3 numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili

Selecion sort in Scratch

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *