How to check whether a number is a perfect number in Ruby

1 Answer

0 votes
# 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
 

 



answered 6 days ago by avibootz
...