Sviluppiamo un algoritmo con Algobuild che calcoli se due numeri sono amicabili.

Definizione di numeri amicabili

Due numeri in matematica si dicono amicabili o amicali o amici se la somma dei divisori propri di uno (escluso il numero stesso) è uguale all’altro numero e viceversa.

Facciamo un esempio:

La coppia di numeri 220 e 284 sono amicabili.

Infatti i divisori di 220 sono: 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 e 110.
Se li sommiamo otteniamo il numero 284

Allo stesso modo i divisori di 284 sono: 1, 2, 4, 71, 142.
La somma di tutti i divisori fa 220.

Banner Pubblicitario

Quindi si dice che i numeri sono amicabili.

Ci sono altri esempi di numeri amicabili, ad esempio 1184 e 1210 oppure 2620 e 2924, ecc…

Algoritmo che calcola se due numeri sono amicabili con Algobuild

Per realizzare l’algoritmo prendiamo in input A e B, che rappresentano i due numeri presi in input su cui fare il controllo per vedere se sono amicabili.

Impostiamo una variabile div, che rappresenta i divisori, e la facciamo partire da 2.

Facciamo partire div da 2 poiché è scontato che qualsiasi numero si possa dividere per 1, pertanto faccio senza a farlo, risparmio operazioni.

Facciamo poi partire la somma dei due divisori direttamente da 1 anziché da zero.

Quindi poniamo sommaA=1 e sommaB=1.

Banner pubblicitario

Successivamente finché il divisore non raggiunge A/2, continuiamo a dividere A per il divisore.

Se il resto della divisione di A diviso div (A%div) è uguale a zero allora div sarà sicuramente divisore, e lo sommiamo alla sommaA; altrimenti lo ignoriamo e andiamo avanti.

In ogni caso si incrementerà il contatore div di uno.

Perché ci fermiamo ad A/2?

Perché è scontato che se dividiamo un numero per un numero superiore alla sua metà avremo sempre resto diverso da zero; ovvero sarà sempre un numero con la virgola. Quindi risparmieremo tante operazioni se ci fermiamo ad A/2.

Lo stesso procedimento possiamo ripeterlo per B, avendo cura di portare il div nuovamente a due una volta che terminiamo con A.

Alla fine confrontiamo la sommaA con B e la sommaB con A. Se entrambi i risultati sono veri allora i numeri sono amicabili, altrimenti no.

numeri amicabili con Algobuild

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