Realizziamo adesso un algoritmo con Scratch che controlli se i numeri inseriti in input sono numeri perfetti.
Definizione di numero perfetto
Un numero si dice perfetto quando è uguale alla somma dei divisori propri (tutti i divisori tranne il numero stesso).
Ad esempio il più piccolo numero perfetto è 6 in quanto i suoi divisori escluso se stesso sono 1, 2 e 3.
Procedimento algoritmo sui numeri perfetti con Scratch
Per la risoluzione dell’algoritmo utilizziamo le variabili:
numero che rappresenta il numero da valutare
div che rappresenta il divisore per cui verrà diviso il numero
somma che conterrà la somma dei divisori.
Quindi chiediamo all’utente di inserire un numero e memorizziamo la risposta nella variabile numero.
Dobbiamo trovare i divisori del numero preso in input, sommarli e dopo confrontare la somma ottenuta con il numero.
Quindi dovrei cominciare a dividere i numeri prima per 1, poi per 2, poi per 3, ecc…
Ma è scontato che ciascun numero è divisibile per 1, quindi faccio partire il divisore da 2. Chiamiamo la variabile divisore div e assegniamo a div il valore di 2.
Creo inoltre la variabile somma che conterrà la somma dei divisori.
Farò partire la variabile somma da 1, perché come detto sopra, possiamo già sommare il divisore 1.
All’interno del ciclo controlliamo se il numero è divisibile per div.
Come si fa a controllarlo?
Basterà controllare se il resto della divisione di numero diviso div è uguale a zero.
Se vero allora aggiorno la variabile somma aggiungendo il valore di div, altrimenti non lo aggiungo. In ogni caso vado avanti e incremento div di 1.
Continuo finché il divisore non raggiunge la metà del numero (numero/2) infatti è scontato che dividendo un numero per un numero maggiore della sua metà si avrà un numero con la virgola, ovvero si avrà che il resto è diverso da zero.
Al termine controllo se il numero inserito coincide con la somma.
Se è così il numero è perfetto, altrimenti non lo è.
È chiaro che ci possono essere altre possibili soluzioni o ampliamenti dell’algoritmo stesso. Proponete pure la vostra soluzione nei commenti e ne discuteremo assieme.
Alcuni link utili
La successione di Fibonacci in Scratch
Massimo fra tre numeri in Scratch
Minimo tra 3 numeri in Scratch