[HOME - BASE Cinque - Appunti di Matematica ricreativa]

Numeri amici

Una domanda a Pitagora
Un giorno chiesero a Pitagora: "Chi è un amico?"
Egli rispose: "Colui che è l'altro me stesso."
E portò come esempio i numeri 220 e 284. Sono due numeri amici perché ciascuno di essi è uguale alla somma dei divisori propri dell'altro.
Un divisore proprio di un numero è un divisore minore del numero stesso.

I numeri  200 e 284 sono la più piccola coppia di numeri amici.

Il sultano e il matematico
C'era una volta un sultano che si considerava un grande solutore di problemi.
Le guardie gli dissero che uno dei suoi prigionieri era un matematico.
Il giorno seguente il sultano andò a far visita al prigioniero e gli lanciò la sfida seguente:
"Puoi scegliere se rimanere in prigione per tutta la vita o darmi un problema da risolvere. Ma deve essere un problema veramente difficile perché ti lascerò libero finché non troverò la soluzione, ma appena avrò trovato la soluzione ti farò tagliare la testa."
Il prigioniero accettò la sfida senza esitazione.
Diede al sultano il seguente problema:

"La somma di tutti i divisori di 200, escluso il numero stesso, è:
1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
e la somma di tutti i divisori di 284, escluso il numero stesso, è:
1 + 2 + 4 +71 + 142 = 220.
Trova un'altra coppia di numeri come questi."

Ispirato ad un racconto di Titu Andreescu, Illinois Mathematics and Science Academy.

Il prigioniero di questa storia se ne andò libero e morì a tarda età con la testa sul collo perché il sultano non fu mai capace di risolvere il problema che egli gli diede.

Quanti calcoli avrebbe dovuto fare per scoprire la successiva coppia di numeri amici, che è 1184, 1210?


La coppia di numeri amici (17.296 ; 18.416), spesso attribuita a Fermat, in realtà è stata scoperta dall'arabo al-Banna nel XIII secolo.

La coppia (9.363.584; 9.437.056) fu scoperta da Descartes.

Il mitico Euler scoprì ben 59 coppie di numeri amici.

Thabit ibn Qurra scoprì una formula per calcolare coppie di numeri amici.
Se si riesce a trovare un numero n che rende primi i numeri a,b,c delle espressioni seguenti:

a = 3 × 2n - 1
b = 3 × 2n-1 - 1
c = 9 × 22n-1 - 1

allora i due numeri

2n × a × b
2n × c

sono amici.
Per n=2 si ottiene la coppia 220, 284, per n=4 si ottiene la coppia  17.296, 18.416, per n=7si ottiene 9.363.584 and 9.437.056, rispettivamente le coppie di Pitagora, al-Banna e Descartes.

Tra 0 e 100.000.000 esistono 236 coppie di numeri amici. Nella seguente tabella riporto le prime 10 e l'ultima.

m   n  
1 220 22 * 5 * 11 284 22 * 71
2 1.184 25 * 37 1.210 2 * 5 * 112
3 2.620 22 * 5 * 131 2.924 22 * 17 * 43
4 5.020 22 * 5 * 251 5.564 22 * 13 * 107
5 6.232 23 * 19 * 41 6.368 25 * 199
6 10.744 23 * 17 * 79 10.856 23 * 23 * 59
7 12.285 33 * 5 * 7 * 13 14.595 3 * 5 * 7 * 139
8 17.296 24 * 23 * 47 18.416 24 * 1151
9 63.020 22 * 5 * 23 * 137 76.084 22 * 23 * 827
10 66.928 24 * 47 * 89 66.992 24 * 53 * 79
236 97.041.735 3 * 3 * 5 * 7 * 71 * 4339 97.945.785 3 * 3 * 5 * 7 * 239 * 1301

Un programma in DECIMAL BASIC per trovare tutte le coppie di numeri amici in un dato intervallo.

DECLARE EXTERNAL FUNCTION f
FOR n=1 TO 10000
LET m=f(n)
if n<m AND n=f(m) THEN PRINT n,m
NEXT n
END

EXTERNAL FUNCTION f(n)
LET s=1
FOR i=2 TO SQR(n )
IF MOD(n,i)=0 THEN
IF i=n/i THEN LET s=s+i ELSE LET s=s+i+(n/i)
END IF
NEXT i
LET f=s
END FUNCTION

Ringrazio Scripter per il seguente programma in C
#include <stdio.h>
#define LIMITE 10000

int main()
{
int numero, amico;
for (numero = 2; numero <= LIMITE; numero++) {
amico = somma_divisori(numero);
if (somma_divisori(amico) == numero) {
printf("%d %d\n", numero, amico);
}
}
return 0;
}

int somma_divisori(int n)
{
int i, totale = 0;
for (i = 1; i < n; i++) {
if (n % i == 0) {
totale += i;
}
}
return totale;
}

Ultimo aggiornamento: marzo 2005


Risposte & riflessioni


Sito Web realizzato da Gianfranco Bo