princeofsudan

ProjectEuler#21 Amicable numbers

Mar 7th, 2013
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.73 KB | None | 0 0
  1. #Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n).
  2. #If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable #numbers.
  3.  
  4. #For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The #proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.
  5.  
  6. #Evaluate the sum of all the amicable numbers under 10000.
  7.  
  8. def d(n):
  9.     dsum = 0
  10.     for i in range(1,int(n/2)+1):
  11.         if n % i == 0:
  12.             dsum += i
  13.     return dsum
  14.  
  15. asum = 0
  16.  
  17. for a in range (1,10001):
  18.     b = d(a)
  19.     if b != a and d(b) == a and b < 10000:
  20.         asum += a + b
  21.  
  22. print asum/2
Advertisement
Add Comment
Please, Sign In to add comment