Realizziamo un algoritmo sui numeri perfetti utilizzando Algobuild e quindi rappresentandolo con il diagramma di flusso e con la pseudo-codifica.

Definizione di numeri perfetti

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 dunque 496, 8128, ecc…

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

Algoritmo in Algobuild per trovare i numeri perfetti

Proviamo adesso a realizzare un diagramma a blocchi, utilizzando Algobuild, per calcolare se un numero preso in input è perfetto oppure no.

Banner Pubblicitario

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 allora si richiede di inserirlo nuovamente tramite il ciclo do-while, facciamo così un controllo dell’input.

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.

Banner pubblicitario

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.

Ecco dunque l’algoritmo sui numeri perfetti realizzato con i diagrammi di flusso.

algoritmi con i numeri perfetti

Pseudo-codifica

Inserisco lo pseudo-codice dell’algoritmo sui numeri perfetti che abbiamo realizzato prima.

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