## Python: Amicable Numbers

**Python: Amicable Numbers **

** Problem No.21 on projectEuler **

In this task we need to calculate the SUM of all divisors of N, from 1 to N.

Then we calculate the Sum of (sum of N divisors ) let’s say M .

Now if

**For example**, the proper divisors of **A=220 **are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore F(220) = 284. And the proper divisors of **B=284 **are 1, 2, 4, 71 and 142; so F(284) = 220. So F(A) =B and F(B)=A then A and B are amicable.

Definition:If f(a) = b and f(b) = a, where a ≠ b,

thena and b are anamicable pairand each of a and b are calledamicable numbers.

**In this task** we will ask the user to enter a Range of numbers and we will search for all Amicable Numbers pairs in that range(from – to) if we fond one we will print out the number and the divisors list. The main function here is the one that get the sum of divisors, we will call it get_divisors_sum and we will examine Amicable with If statement.

Hint ..

To check if the sum of divisors from both said are equal we use (t2==x )

AND that this sum are not same we use (t1!=t2)

AND that we did not print the pair before we use: (t2 not in ami_pair)

**The Code:**

#Python: Amicable Numbers

#Problem No.21 on projectEuler

num1=int(input(‘The range Start from:’))

num2=int(input(‘The range Ends at:’))

t1=0

t2=0

l=[]

l1=[]

l2=[]

ami_pair=[]

def get_divisors_sum (num):

t=0

l=[]

for a in range (1,num):

if num%a==0 :

l.append(a)

t=t+a

return t,l

for x in range(num1,num2):

l1=[]

t1,l1=get_divisors_sum(x)

l2=[]

t2,l2=get_divisors_sum(t1)

if (t2==x) and (t1!=t2) and (t2 not in ami_pair):

print(‘\nget_divisors_sum({}) is {} divisors={}’.format(x,t1,l1))

print(‘\nget_divisors_sum({}) is {} divisors={}’.format(t1,t2,l2))

print(‘\nSo {} and {} are Amicable Numbers .’.format(t1,t2))

ami_pair.extend((t1,t2))