Numeri Perfetti

Realizziamo un algoritmo con Algobuild che verifichi se i numeri sono perfetti.

Definizione di numero perfetto.

In matematica un numero si dice perfetto quando è uguale alla somma dei divisori propri (tutti i divisori tranne il numero stesso).

Ad esempio il numero 6 è perfetto perché è divisibile per 1, 2, 3 e la somma dei suoi divisori è proprio 6.

Il numero 28 è un altro numero perfetto, infatti i suoi divisori sono 1, 2, 4, 7, 14. Altri numeri perfetti sono 496, 8128, ecc…

Abbiamo già visto in precedenza l’algoritmo sui numeri amicabili, se vuoi consultarlo vai al link.

Algoritmo in Algobuild per i numeri perfetti

Proviamo a realizzare un diagramma a blocchi utilizzando Algobuild che serve a calcolare se un numero è perfetto oppure no.

Per prima cosa chiediamo in input il nostro numero n. Dopo controlliamo che n sia positivo perché i numeri perfetti sono solo numeri positivi.

Se non è positivo si richiede di inserirlo nuovamente tramite il ciclo do-while.

Se invece é positivo andiamo avanti nel nostro algoritmo e impostiamo una variabile div uguale a 2, in quanto so già che ogni numero è divisibile per 1.

Poi creiamo un’altra variabile che contiene la somma di tutti i divisori.

Chiamiamo la variabile somma e la inizializziamo ad 1 per il discorso che abbiamo fatto prima, ovvero che ciascun numero è divisibile per uno.

Adesso iniziamo il ciclo che consentirà di dividere il numero preso in input n per il divisore div. Se il numero n è divisibile per div lo aggiunge alla somma dei divisori e quindi alla variabile somma, altrimenti va avanti.

In ogni caso si incrementa la variabile div di uno e si continua a dividere così per il nuovo numero.

Il ciclo terminerà quando il div raggiungerà la metà del numero n.

Alla fine controllerà se la somma dei divisori coincide con il numero stesso e dirà quindi se il numero n è perfetto oppure no.

Allego sotto l’immagine che rappresenta l’algoritmo per i numeri perfetti.

Chiaramente ci possono essere tante altre soluzioni, io l’ho pensato così!


algoritmi con i numeri perfetti

Inserisco lo pseucodice per l’algoritmo dei numeri perfetti.

PROG main
DO_WHILE //n<=0
IN n
END DO_WHILE n<=0
ASSIGN div=2
ASSIGN somma=1
WHILE div<=n/2
IF n%div==0
ASSIGN somma=somma+div
ELSE //if n%div==0
END IF //n%div==0
ASSIGN div=div+1
END WHILE //div<=n/2
IF somma==n
OUT “perfetto”
ELSE //if somma==n
OUT “non perfetto”
END IF //somma==n
END PROG //main

Alcuni link utili

Indice argomenti diagramma a blocchi

Numeri primi da 1 a 100

Array con algobuild

Divisori di un numero con algobuild

Algoritmi di selezione sugli angoli

Algoritmi di selezione

Triangoli con algobuild

Fibonacci con algobuild

Serie buffa con algobuild

Numeri amicabili con algobuild

Numeri perfetti con algobuild

Massimo fra tre numeri

Minore fra tre numeri


Autore dell'articolo: Cristina

Avatar per Coding Creativo

Lascia un commento

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