Realizziamo un semplice programma per trovare un numero primo con Scratch.
Scegliamo uno sfondo e uno sprite qualsiasi.
Io ad esempio ho scelto questa scena.
Dopo chiediamo al nostro programma di inserire un numero in input, realizzando lo script sul gattino. Memorizziamo il numero immesso da tastiera in una variabile di nome numero.
Per verificare se un numero è primo dobbiamo dividerlo progressivamente per un numero che parta da 1 e che si fermi al numero stesso. Così al termine se i divisori sono solo due allora il numero è primo.
Quindi impostiamo la variabile divisore ad 1. Dopo costruiamo un ciclo ripeti fino a quando che faremo terminare quando il divisore raggiunge il numero, escludendo proprio la divisione per il numero stesso. Difatti tutti i numeri sono divisibili per se stesso e per uno. Quindi iniziamo escludendo proprio il numero stesso.
Il divisore ogni volta si incrementa di 1 ed il ciclo continuerà fino a quando il divisore arriva a numero -1. Infatti non appena la condizione numero=div è verificata si esce fuori dal ciclo.
Adesso ci serve un contatore che si incrementi ogni volta che troviamo un divisore. Chiamiamo questo contatore conta e lo inizializziamo a zero. Dopo, se troviamo un divisore allora incrementiamo il suo valore di 1.
Quindi adesso ci rimare da controllare, alla fine del ciclo, se il contatore vale più di 1. Se si, allora il numero non è primo.
Trovare un numero primo con Scratch – ottimizzazione
Chiaramente è possibile fare alcune ottimizzazioni, infatti potremmo uscire fuori dal ciclo non appena viene trovato un divisore.
Modifichiamo la condizione inserendo tramite l’operatore logico o la condizione conta >1.
Ecco dunque il programma completo:
Questo è un semplice esempio per trovare un numero primo con Scratch, nella prossima lezione implementeremo altri algoritmi.
Alcuni link utili
Massimo fra tre numeri in Scratch
Minimo tra 3 numeri in Scratch
Esempio di successione di Fibonacci con Algobuild
La successione di Fibonacci in C++