domingo, 13 de noviembre de 2016

Euler #21

https://projecteuler.net/problem=21

En este problema lo complicado es caer en la cuenta que 6 y 28 no se pueden considerar como números amigos, puesto que son "amigos de sí mismos" ;)

def get_divisors(num):
divisors = []
for x in range(1, num/2 + 1):
if num % x == 0:
divisors.append(x)
return divisors

def find_amicable_for(num):
sum_divs = sum(get_divisors(num))
if sum(get_divisors(sum_divs)) == num and sum_divs != num:
return sum_divs
return False


if __name__ == '__main__':
print get_divisors(28)
amicables = []
for x in range(1, 10000):
a = find_amicable_for(x)
if a is not False:
amicables.append(a)

print amicables
print sum(amicables)

No hay comentarios:

Publicar un comentario