Esiste un legame tra numeri primi e numeri amicabili? Abbiamo visto che i numeri primi hanno solo due divisori diversamente da una coppia di numeri amicabili.
Un quesito: Un numero amicabile è solo pari? Sapreste dimostrare se è vero o falso?
Mentre meditate, vi dico che sicuramente un numero amicabile è composto, perchè ammette un numero di divisori maggiore di 2 e, quindi, scomponibile in numeri primi.
Altra domanda: dati tre numeri primi p,q,r possiamo ottenere dei numeri amicabili?
Al-Faris, vissuto in Persia attorno al 1300, nel suo testo sulle coppie amicabili, fornì la coppia (2^k)pq, (2^k)r, che è amicabile se e solo se:
p = (3*(2^(k-1)))-1,
q = (3*(2^k))-1
r = 9*(2^(2k-1))-1
sono tutti numeri primi, per k maggiore o uguale a 2.
E' evidente, per la definizione di Al Faris su come trovare i numeri amicabili tramite tre primi, che si tratta di potenze di 2 (pari) moltiplicate per dei dispari, il cui risultato è obbligatoriamente un pari.
Se si fissa k=2, si ottiene ad esempio p=5, q=11, r=71 tutti primi e quindi la coppia amicabile 220 e 284.
Per vedere quali coppie di numeri sono amichevoli con p,q,r primi è possibile scrivere un programmino in PARI/GP o in MAXIMA. In realtà si potrebbe tentare anche di risolvere un sistema di equazioni.
Il metodo di Al-Faris però non dà tutte le coppie di numeri amicabili, ma solo quelle ottenibili con le condizioni di cui sopra (vedi lista amichevoli noti http://amicable.homepage.dk/knwnc2.htm).
Ad esempio sono amichevoli anche le coppie (1184,1210) (2620,2924) (5020,5564) (6232,6368) che storicamente furono trovate da Eulero. Oggi il totale di coppie note, grazie ai computer è notevole: un totale di circa 11994387 coppie e si continua a trovarne altre.
Ecco un semplice programma in PARI/GP che sfrutta l'algoritmo di Al-Faris.
Samic(n1=2, n2=1000)=local();{
if( n1<2, error("deve essere n1>=2"););
for(k=n1,n2,
p=(3*(2^(k-1)))-1;
q=(3*(2^(k)))-1;
r=(9*(2^(2*k-1)))-1;
if(isprime(p) & isprime(q) & isprime(r) == 1,
N=(2^k)*(p*q);
M=(2^k)*r;
print("(",N,",",M,")");
);
);
print("Numeri esaminati ", n2-n1+1 );
return;
}
Ecco cosa fornisce con k tra 2 e 1000:
(220,284)
(17296,18416)
(9363584,9437056)
Vi do adesso la risposta al quesito iniziale: è falso. Esistono anche coppie di numeri amichevoli dispari e coppie di numeri amichevoli pari; ma non si trovano miste, ovvero uno pari e l'altro dispari. E' dimostrabile?
La lascio a voi la dimostrazione. Un suggerimento: partite dalla somma dei divisori (escluso se stesso) di un numero amichevole pari; che cosa vi da e perchè?
Altre osservazioni
1. Nessun numero amichevole è un quadrato
2. Esistono coppie di numeri amichevoli la cui somma delle cifre è uguale (mod 9); esempio:
(69615,87633) da cui 6+9+6+1+5 = 27 e 8+7+6+3+3 = 27
il mod 9 = 0 per entrambi
3. Esistono coppie amichevole che ogni numero è divisibile per la somma delle sue cifre; esempio:
(2620, 2924). Qui 2+6+2+0=10 difatti 2610 è divisibile per 10; mentre 2+9+2+4=17 e 2924 è
divisibile per 17. Un numero divisibile per la somma delle sue cifre è detto Harshad number;
per cui la coppia amichevole è una Harshad amicable pair (HsAP).
Esempi sono le coppie:
(2620, 2924)
(10634085,14084763),
(23389695, 25132545),
(34256222, 35997346)
etc.
4 Spesso i numeri amichevoli di una coppia terminano con 0 e 5.
(23389695, 25132545),
(34256222, 35997346)
etc.
4 Spesso i numeri amichevoli di una coppia terminano con 0 e 5.
5 Il rapporto minimo n/m con n minore di m è tra 0.598343 e
0.999999999999999999999999999999999999999999999999999999999999999999999999999999999999999998
6. Un Happy number è un numero tale che prendendo il quadrato delle sue cifre e sommandole e iterando il
processo si ottiene alla fine 1. Ad esempio prendiamo 7, si ottiene la sequenza:
7,7x7=49,4x4+9x9=97,9x9+7x7=130,1x1+3x3=10,1x1=1.
Le coppie di numeri amichevoli che sono costituite da Happy number sono definite Happy amicable
pair (HyAP)
Esempi sono le coppie:
Esempi sono le coppie:
(10572550, 10854650),
(32685250, 34538270),
(35361326, 40117714),
(35390008, 39259592)
(32685250, 34538270),
(35361326, 40117714),
(35390008, 39259592)
etc.
Algoritmo che cerca tutti i numeri amichevoli
Un algoritmo semplice che cerca, invece, tutti i numeri amichevoli può essere come quello che segue
Allamic(n1=2, n2=1000)=local(s=0, prec1=0);{
if( n1<2, error("deve essere n1>=2"););
for(k=n1,n2,
s=AlqSum(k);
if( AlqSum(s) == k && k! = s & k != prec1,
print("(",k,",",s,")");
prec1=s;
);
);
print("Numeri esaminati ", n2-n1+1 );
return;
}
AlqSum(n)=local(ret=1);{
vec = divisors(n);
ret = sum(i=1, length(vec)-1, vec[i] );
return(ret);
}
Alla prox.
Algoritmo che cerca tutti i numeri amichevoli
Un algoritmo semplice che cerca, invece, tutti i numeri amichevoli può essere come quello che segue
Allamic(n1=2, n2=1000)=local(s=0, prec1=0);{
if( n1<2, error("deve essere n1>=2"););
for(k=n1,n2,
s=AlqSum(k);
if( AlqSum(s) == k && k! = s & k != prec1,
print("(",k,",",s,")");
prec1=s;
);
);
print("Numeri esaminati ", n2-n1+1 );
return;
}
AlqSum(n)=local(ret=1);{
vec = divisors(n);
ret = sum(i=1, length(vec)-1, vec[i] );
return(ret);
}
0 commenti:
Posta un commento