Numeri amicabili in Python
I numeri amicabili sono una coppia di numeri interi tali che la somma dei divisori propri di un numero è uguale all'altro, e viceversa. I divisori propri di un numero sono tutti i suoi divisori escluso il numero stesso.
Ad esempio, la coppia di numeri 220 e 284 è amicabile. I divisori propri di 220 sono:
1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110
La somma di questi divisori è 284.
Analogamente, i divisori propri di 284 sono:
1, 2, 4, 71, 142
La loro somma è 220.
Poiché la somma dei divisori propri di ciascun numero è uguale all'altro, i numeri 220 e 284 formano una coppia di numeri amicabili.
In Python, possiamo scrivere codice per determinare se due numeri sono amicabili, sfruttando le funzionalità del linguaggio e implementando algoritmi basati sulla somma dei divisori.
Il processo per determinare se due numeri sono amicabili si basa su tre passaggi principali:
Calcolare la somma dei divisori propri di entrambi i numeri.
Verificare se la somma dei divisori del primo numero è uguale al secondo numero.
Verificare se la somma dei divisori del secondo numero è uguale al primo numero.
Se entrambe le condizioni sono soddisfatte, i due numeri sono considerati amicabili.
Implementazione in Python dei numeri amicabili
Vediamo come possiamo implementare un programma in Python per trovare coppie di numeri amicabili. Il primo passo è creare una funzione che calcoli la somma dei divisori propri di un dato numero.
Questa funzione riceve un numero intero come input e restituisce la somma dei suoi divisori propri.
def somma_divisori_propri(n):
somma = 0
for i in range(1, n):
if n % i == 0:
somma += i
return somma
Ora possiamo creare una funzione che utilizza somma_divisori_propri per verificare se due numeri sono amicabili.
def sono_amicabili(num1, num2):
return somma_divisori_propri(num1) == num2 and somma_divisori_propri(num2) == num1
Questa funzione chiama somma_divisori_propri per ciascun numero e confronta i risultati. Se entrambe le somme corrispondono, i numeri sono amicabili.
Mettiamo tutto insieme in un programma Python completo che permette all'utente di inserire due numeri e determina se sono una coppia di numeri amicabili.
def somma_divisori_propri(n):
somma = 0
for i in range(1, n):
if n % i == 0:
somma += i
return somma
def sono_amicabili(num1, num2):
return somma_divisori_propri(num1) == num2 and somma_divisori_propri(num2) == num1
# Input dall'utente
num1 = int(input("Inserisci il primo numero: "))
num2 = int(input("Inserisci il secondo numero: "))
# Verifica se sono numeri amicabili
if sono_amicabili(num1, num2):
print(f"{num1} e {num2} sono numeri amicabili.")
else:
print(f"{num1} e {num2} non sono numeri amicabili.")