Skip to content

Instantly share code, notes, and snippets.

@aalvesjr
Created January 29, 2013 21:30
Show Gist options
  • Select an option

  • Save aalvesjr/4668071 to your computer and use it in GitHub Desktop.

Select an option

Save aalvesjr/4668071 to your computer and use it in GitHub Desktop.
Números perfeitos com Ruby
#Em Matemática, um número perfeito é um número inteiro para o qual a soma de todos os seus
# divisores positivos próprios (excluindo ele mesmo) é igual ao próprio número.
#
# Por exemplo, o número 6 é um número perfeito, pois:
# 6 = 1 + 2 + 3
# O próximo número perfeito é o 28, pois:
# 28 = 1 + 2 + 4 + 7 + 14
def calcula_divisores(num)
(1...num).each_with_object([]) do |n, buffer|
buffer << n if num % n == 0
end
end
def calcula_total_divisores(arr)
arr.reduce(:+)
end
(1..100_000).each_with_object([]) do |n, buffer|
buffer << n if calcula_total_divisores(calcula_divisores(n)) == n
end
# [6, 28, 496, 8128]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment