How to find the first integer equal to the sum of its digits raised to some power in Ruby

1 Answer

0 votes
# compute sum of digits
def digitSum(n)
  s = 0

  while n > 0
    s += n % 10
    n /= 10
  end

  s
end

def main
  n = 2

  loop do
    s = digitSum(n)

    # Try powers k = 2..10 (enough for reasonable ranges)
    p = s * s
    (2..10).each do |k|
      if p == n
        puts "Found: #{n} = (#{s})^#{k}"
        return
      end
      p *= s # next power
    end

    n += 1
  end
end

main



=begin
run:

Found: 81 = (9)^2

=end

 



answered 1 day ago by avibootz

Related questions

...