# If the sum of all factors of a number is equal to the number, then the number is perfect
# Factors of a number are numbers that divide the number evenly
# 6
# factors = 1, 2, 3
# 1 + 2 + 3 = 6
def perfect_number?(n)
return false if n < 2
sum = 1
limit = Math.sqrt(n).to_i
(2..limit).each do |i|
if n % i == 0
sum += i
pair = n / i
sum += pair if pair != i
end
end
sum == n
end
(1..10_000).each do |num|
puts "#{num} is perfect" if perfect_number?(num)
end
=begin
run
6 is perfect
28 is perfect
496 is perfect
8128 is perfect
=end