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

script numeri perfetti scratch

Per la risoluzione dell’algoritmo utilizziamo le variabili:

numero che rappresenta il numero da valutare

Banner Pubblicitario

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.

Banner pubblicitario

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

Numeri primi in Scratch

La successione di Fibonacci in Scratch

Massimo fra tre numeri in Scratch

Minimo tra 3 numeri in Scratch

Numeri perfetti con algobuild

Numeri amicabili