/
, if-statement, , -1. next each ( @Amadan ).
, . . . , total:
def find_nb m
(1..Float::INFINITY).each do |n|
total = (1..n).inject(0) { |sum, value| sum + value**3 }
if total == m
return n
elsif total > m
return -1
end
end
end
find_nb 4183059834009
find_nb 135440716410000
find_nb 40539911473216
find_nb 37
, Ruby loop. with_index :
def find_nb m
loop.with_index(1) do |_,n|
t = (1..n).inject { |sum,i| sum + i**3 }
if t == m
return n
elsif t > m
return -1
end
end
end
find_nb 4183059834009
find_nb 135440716410000
find_nb 40539911473216
find_nb 37